修改地图添加校验

This commit is contained in:
cbs 2025-05-28 15:22:32 +08:00
parent bf2fdaa023
commit 7a1627711c
37 changed files with 345 additions and 19 deletions

View File

@ -244,6 +244,7 @@ public interface ErrorCodeConstants {
ErrorCode THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_LINE_WAREHOUSES = new ErrorCode(1_002_038_007, "已有库位在其他线库内");
ErrorCode THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_STORAGE_AREAS = new ErrorCode(1_002_038_008, "已有库位在其它区域内");
ErrorCode MAP_DOES_NOT_EXIST_AGV = new ErrorCode(1_002_038_009, "此楼层区域不存在车辆需要暂停或恢复");
ErrorCode MAP_EXIST_TASK_EXIST_TASK = new ErrorCode(1_002_038_010, "修改地图:此楼层区域存在处理中的任务或者库位上还有货物");
// ========== 机器人自动移库 1-002-039-000 ==========
ErrorCode TASK_AUTO_MOVE_NOT_EXISTS = new ErrorCode(1_002_039_001, "车辆自动移库不存在");

View File

@ -46,7 +46,7 @@ public class RequestProcessor {
private void sendData(String map, Map<String, String> data) {
// -- 发送给对应的websocket
// System.out.println("key:" + map + "发送数据:" + data);
log.info("key:" + map + "发送数据:" + data);
// log.info("key:" + map + "发送数据:" + data);
webSocketSenderApi.sendObject(map, "map_push", data);
}

View File

@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService;
import cn.iocoder.yudao.module.system.service.positionmap.PositionMapLineService;
import cn.iocoder.yudao.module.system.service.robot.RobotTaskService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -35,6 +36,7 @@ import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -136,7 +138,7 @@ public class PositionMapItemController {
@PostMapping("/lineAddItem")
@Operation(summary = "线上加点保存点位")
@PreAuthorize("@ss.hasPermission('system:position-map-item:lineAddItem')")
public CommonResult<Boolean> lineAddItem(@Valid @RequestBody List<PositionMapItemNodeDTO> list) {
public CommonResult<Map<String,Object>> lineAddItem(@Valid @RequestBody List<PositionMapItemNodeDTO> list) {
PositionMapItemSaveReqVO positionMapItem = BeanUtils.toBean(list.get(0), PositionMapItemSaveReqVO.class);
positionMapItemService.createPositionMapItem(positionMapItem);
@ -144,10 +146,23 @@ public class PositionMapItemController {
positionMapLineService.deletePositionMapLine(list.get(0).getOldLineId());
List<PositionMapLineSaveReqVO> positionMapLines = list.get(0).getPositionMapLines();
List<PositionMapLineDO> lineList = BeanUtils.toBean(positionMapLines, PositionMapLineDO.class);
List<Long> itemIds = new ArrayList<>();
for (PositionMapLineDO positionMapLineDO : lineList) {
itemIds.add(positionMapLineDO.getStartingPointId());
itemIds.add(positionMapLineDO.getEndPointId());
}
Map<Long,Long> sortNumMap = positionMapItemService.getSortNumMapByIds(itemIds);
for (PositionMapLineDO positionMapLineDO : lineList) {
positionMapLineDO.setPositionMapId(positionMapItem.getPositionMapId());
positionMapLineDO.setStartingSortNum(sortNumMap.get(positionMapLineDO.getStartingPointId()).intValue());
positionMapLineDO.setEndPointSortNum(sortNumMap.get(positionMapLineDO.getEndPointId()).intValue());
}
positionMapLineService.batchSaveLines(lineList);
return success(true);
Map<String,Object> map = new HashMap<>();
map.put("ITEM",positionMapItemService.getPositionMapItem(positionMapItem.getId()));
map.put("LINE",lineList);
return success(map);
}
}

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.housearea.vo.HouseAreaPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.housearea.HouseAreaDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 库区 Mapper
@ -24,4 +25,9 @@ public interface HouseAreaMapper extends BaseMapperX<HouseAreaDO> {
.orderByDesc(HouseAreaDO::getId));
}
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseAreaByMapId(@Param("mapId") Long mapId);
}

View File

@ -27,4 +27,9 @@ public interface WareHouseLaneMapper extends BaseMapperX<WareHouseLaneDO> {
.orderByDesc(WareHouseLaneDO::getId));
}
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseLaneByMapId(@Param("mapId") Long mapId);
}

View File

@ -169,4 +169,17 @@ public interface WareHouseLocationMapper extends BaseMapperX<WareHouseLocationDO
* @return
*/
List<WareHouseLocationItemRespVO> getLocationsXYByMapId(@Param("mapId") Long mapId);
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseLocationByMapId(@Param("mapId") Long mapId);
/**
* 查询有货或者有锁定的库位
* @param mapId
* @return
*/
List<WareHouseLocationDO> getInStockLockLocationByMapId(@Param("mapId") Long mapId);
}

View File

@ -48,4 +48,10 @@ public interface DeviceInformationMapper extends BaseMapperX<DeviceInformationDO
*/
void setDeviceReleaseByLastUser(@Param("lastUser") String lastUser,
@Param("deviceUseStatus") String deviceUseStatus);
/**
* 根据地图id删除
* @param mapId
*/
void deleteDeviceByMapId(@Param("mapId") Long mapId);
}

View File

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.parkingspot.vo.ParkingSpotPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.parkingspot.ParkingSpotDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 停车点 Mapper
@ -30,4 +31,9 @@ public interface ParkingSpotMapper extends BaseMapperX<ParkingSpotDO> {
.orderByDesc(ParkingSpotDO::getId));
}
/**
* 根据地图id删除
* @param mapId
*/
void deleteParkingByMapId(@Param("mapId") Long mapId);
}

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionAllChangePointBindingDT
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionChangePointBindingPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionChangePointBindingDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 区域变更点绑定 Mapper
@ -33,4 +34,10 @@ public interface PositionChangePointBindingMapper extends BaseMapperX<PositionCh
* @return
*/
List<PositionAllChangePointBindingDTO> getAllPositionChangePointBinding();
/**
* 根据地图id删除
* @param mapId
*/
void deleteBindIngByMapId(@Param("mapId") Long mapId);
}

View File

@ -68,4 +68,10 @@ public interface PositionMapItemMapper extends BaseMapperX<PositionMapItemDO> {
* @return
*/
List<PositionMapItemDO> selectInWaitList(@Param("list") List<RobotPositionMapDTO> list);
/**
* 删除这个地图的点
* @param mapId
*/
void deleteByMapId(@Param("mapId") Long mapId);
}

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.mqtt.api.path.dto.PositionMapLineDTO;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLinePageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -32,4 +33,10 @@ public interface PositionMapLineMapper extends BaseMapperX<PositionMapLineDO> {
* @return
*/
List<PositionMapLineDTO> getAllPositionMapLine(PositionMapLineDO positionMapLineDO);
/**
* 根据地图id删除
* @param mapId
*/
void deleteByMapId(@Param("mapId") Long mapId);
}

View File

@ -75,4 +75,10 @@ public interface HouseAreaService extends IService<HouseAreaDO> {
* @param id
*/
void delete(Long id);
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseAreaByMapId(Long mapId);
}

View File

@ -187,4 +187,9 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
// positionMapItemService.emptyAreaId(areaDO.getPositionMapId(), id);
}
@Override
public void deleteHouseAreaByMapId(Long mapId) {
houseAreaMapper.deleteHouseAreaByMapId(mapId);
}
}

View File

@ -45,4 +45,10 @@ public interface WareHouseLaneService extends IService<WareHouseLaneDO> {
* @param id
*/
void delete(Long id);
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseLaneByMapId(Long mapId);
}

View File

@ -157,4 +157,9 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
positionMapItemService.emptyLaneId(wareHouseLaneDO.getPositionMapId(), id);
houseLocationService.updateLocationLaneNameEmptyByLaneId(id);
}
@Override
public void deleteHouseLaneByMapId(Long mapId) {
houseLaneMapper.deleteHouseLaneByMapId(mapId);
}
}

View File

@ -123,4 +123,12 @@ public interface HouseLocationService extends IService<WareHouseLocationDO> {
* @return
*/
List<WareHouseLocationItemRespVO> getLocationsXYByMapId(Long mapId);
/**
* 根据地图id删除
* @param mapId
*/
void deleteHouseLocationByMapId(Long mapId);
List<WareHouseLocationDO> getInStockLockLocationByMapId(Long mapId);
}

View File

@ -193,6 +193,21 @@ public class HouseLocationServiceImpl extends ServiceImpl<WareHouseLocationMappe
return houseLocationMapper.getLocationsXYByMapId(mapId);
}
@Override
public void deleteHouseLocationByMapId(Long mapId) {
houseLocationMapper.deleteHouseLocationByMapId(mapId);
}
/**
* 查询有货或者有锁定的库位
* @param mapId
* @return
*/
@Override
public List<WareHouseLocationDO> getInStockLockLocationByMapId(Long mapId) {
return houseLocationMapper.getInStockLockLocationByMapId(mapId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {

View File

@ -137,4 +137,10 @@ public interface DeviceInformationService extends IService<DeviceInformationDO>
* @return
*/
String getMapImageUrl(Integer deviceType);
/**
* 根据地图ID删除
* @param id
*/
void deleteDeviceByMapId(Long id);
}

View File

@ -447,6 +447,11 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
return config.getConfigStr();
}
@Override
public void deleteDeviceByMapId(Long mapId) {
informationMapper.deleteDeviceByMapId(mapId);
}
public void shrink(String ip, int port, String deviceNo) {
boolean success = true;
short[] shrinkArr = {0};

View File

@ -68,4 +68,10 @@ public interface ParkingSpotService extends IService<ParkingSpotDO> {
* @param list
*/
void batchSaveOrEditOrDel(Long positionMapId, List<List<ParkingSpotDO>> list);
/**
* 根据地图id删除
* @param mapId
*/
void deleteParkingByMapId(Long mapId);
}

View File

@ -84,4 +84,9 @@ public class ParkingSpotServiceImpl extends ServiceImpl<ParkingSpotMapper, Parki
}
}
@Override
public void deleteParkingByMapId(Long mapId) {
parkingSpotMapper.deleteParkingByMapId(mapId);
}
}

View File

@ -90,4 +90,10 @@ public interface PositionChangePointBindingService extends IService<PositionChan
* @return
*/
List<PositionChangePointBindingDO> getByMapIdAndStartPointIds(Long positionMapId, List<Long> endPointIds, List<Long> startPointIds);
/**
* 根据地图ID删除
* @param mapId
*/
void deleteBindingByMapId(Long mapId);
}

View File

@ -169,5 +169,10 @@ public class PositionChangePointBindingServiceImpl extends ServiceImpl<PositionC
.notIn(PositionChangePointBindingDO::getEndPointId,startPointIds));
}
@Override
public void deleteBindingByMapId(Long mapId) {
positionChangePointBindingMapper.deleteBindIngByMapId(mapId);
}
}

View File

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
* 仓库点位地图子表 Service 接口
@ -131,4 +132,17 @@ public interface PositionMapItemService extends IService<PositionMapItemDO> {
* @return
*/
List<PositionMapItemSaveReqVO> getItemBySortNum(Long sortNum);
/**
* 根据ID获取排序的MAP
* @param itemIds
* @return
*/
Map<Long, Long> getSortNumMapByIds(List<Long> itemIds);
/**
* 删除这个地图的点
* @param mapId
*/
void deleteByMapId(Long mapId);
}

View File

@ -25,7 +25,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.hutool.core.collection.CollUtil.isNotEmpty;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@ -191,4 +194,21 @@ public class PositionMapItemServiceImpl extends ServiceImpl<PositionMapItemMappe
return bean;
}
/**
* 根据ID获取排序的MAP
* @param itemIds
* @return
*/
@Override
public Map<Long, Long> getSortNumMapByIds(List<Long> idList) {
List<PositionMapItemDO> list = positionMapItemMapper.selectList(new LambdaQueryWrapperX<PositionMapItemDO>()
.in(PositionMapItemDO::getId, idList));
return list.stream().collect(Collectors.toMap(PositionMapItemDO::getId, PositionMapItemDO::getSortNum));
}
@Override
public void deleteByMapId(Long mapId) {
positionMapItemMapper.deleteByMapId(mapId);
}
}

View File

@ -68,4 +68,10 @@ public interface PositionMapLineService extends IService<PositionMapLineDO> {
* @param lineList
*/
void batchSaveLines(List<PositionMapLineDO> lineList);
/**
* 根据地图ID删除
* @param id
*/
void deleteByMapId(Long mapId);
}

View File

@ -83,4 +83,9 @@ public class PositionMapLineServiceImpl extends ServiceImpl<PositionMapLineMappe
positionMapLineMapper.insertBatch(lineList);
}
@Override
public void deleteByMapId(Long mapId) {
positionMapLineMapper.deleteByMapId(mapId);
}
}

View File

@ -16,24 +16,34 @@ import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMa
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.robot.detail.RobotDoingTaskDTO;
import cn.iocoder.yudao.module.system.controller.admin.robot.mapstop.RobotMapStopSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.RobotWarnMsgSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO;
import cn.iocoder.yudao.module.system.dal.dataobject.remote.RemoteControllerInformationDO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotMapStopDO;
import cn.iocoder.yudao.module.system.dal.mysql.information.DeviceInformationMapper;
import cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionMapMapper;
import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum;
import cn.iocoder.yudao.module.system.enums.robot.RobotStatusEnum;
import cn.iocoder.yudao.module.system.enums.robot.remote.RemoteModeEnum;
import cn.iocoder.yudao.module.system.enums.robot.task.RobotCommandTypeEnum;
import cn.iocoder.yudao.module.system.service.housearea.HouseAreaService;
import cn.iocoder.yudao.module.system.service.houselane.WareHouseLaneService;
import cn.iocoder.yudao.module.system.service.houselocation.HouseLocationService;
import cn.iocoder.yudao.module.system.service.information.DeviceInformationService;
import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
import cn.iocoder.yudao.module.system.service.parkingspot.ParkingSpotService;
import cn.iocoder.yudao.module.system.service.remote.RemoteControllerInformationService;
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
import cn.iocoder.yudao.module.system.service.robot.RobotTaskDetailService;
import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService;
import cn.iocoder.yudao.module.system.service.robot.mapstop.RobotMapStopService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.HttpHeaders;
@ -53,6 +63,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -98,6 +109,33 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
@Resource
private RemoteControllerInformationService controllerInformationService;
@Resource
private PositionMapItemService positionMapItemService;
@Resource
private PositionMapLineService positionMapLineService;
@Resource
private HouseLocationService houseLocationService;
@Resource
private DeviceInformationMapper deviceInformationMapper;
@Resource
private PositionChangePointBindingService positionChangePointBindingService;
@Resource
private HouseAreaService houseAreaService;
@Resource
private WareHouseLaneService houseLaneService;
@Resource
private RobotWarnMsgService warnMsgService;
@Resource
private ParkingSpotService parkingSpotService;
@Override
public Long createPositionMap(PositionMapSaveReqVO createReqVO) {
// 插入
@ -132,6 +170,7 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
}
@Override
@Transactional(rollbackFor = Exception.class)
public void uploadFiles(MultipartFile[] files) {
if (files == null || files.length < 2) {
throw exception(PLEASE_UPLOAD_PNG_AND_YAML_FILES);
@ -189,6 +228,37 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
return;
}
PositionMapDO positionMap = positionMapMapper.selectOne(new LambdaQueryWrapperX<PositionMapDO>()
.eq(PositionMapDO::getFloor, floorInt)
.eq(PositionMapDO::getArea, areaStr));
if (ObjectUtil.isNotEmpty(positionMap)) {
positionMapMapper.deleteById(positionMap.getId());
List<WareHouseLocationDO> locationDOList = houseLocationService.getInStockLockLocationByMapId(positionMap.getId());
if (ObjectUtil.isNotEmpty(locationDOList)) {
warnMsgService.sendWarnMsgToWebsocket(MAP_EXIST_TASK_EXIST_TASK.getMsg());
RobotWarnMsgSaveReqVO warnMsgSaveReqVO = new RobotWarnMsgSaveReqVO();
List<String> locationNos = locationDOList.stream().map(WareHouseLocationDO::getLocationNo).collect(Collectors.toList());
String locationStr = StringUtils.join(locationNos, ",");
if (locationStr.length() > 160) {
locationStr = locationStr.substring(0,160);
}
warnMsgSaveReqVO.setWarnMsg(MAP_EXIST_TASK_EXIST_TASK.getMsg()+locationStr);
warnMsgSaveReqVO.setWarnLevel(4);
warnMsgSaveReqVO.setWarnCode("MAP");
warnMsgSaveReqVO.setSolveTime(LocalDateTime.now());
warnMsgService.createWarnMsg(warnMsgSaveReqVO);
throw exception(MAP_EXIST_TASK_EXIST_TASK);
}
positionMapItemService.deleteByMapId(positionMap.getId());
positionMapLineService.deleteByMapId(positionMap.getId());
houseLocationService.deleteHouseLocationByMapId(positionMap.getId());
deviceInformationMapper.deleteDeviceByMapId(positionMap.getId());
positionChangePointBindingService.deleteBindingByMapId(positionMap.getId());
houseAreaService.deleteHouseAreaByMapId(positionMap.getId());
houseLaneService.deleteHouseLaneByMapId(positionMap.getId());
parkingSpotService.deleteParkingByMapId(positionMap.getId());
}
// 处理 PNG 文件
try {
pngUrl = url + pngFile.getOriginalFilename();
@ -199,18 +269,11 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
e.printStackTrace();
return;
}
PositionMapDO positionMap = positionMapMapper.selectOne(new LambdaQueryWrapperX<PositionMapDO>()
.eq(PositionMapDO::getFloor, floorInt)
.eq(PositionMapDO::getArea, areaStr));
if (positionMap != null) {
positionMapMapper.updateById(positionMap.setYamlJson(yamlJson).setPngUrl(pngUrl).setYamlUrl(yamlUrl));
// todo 异步通知所有该楼层区域内所有AGV车地图有更改 - 这个时候AGV应当重新获取地图信息
} else {
positionMap = new PositionMapDO().setFloor(floorInt).setArea(areaStr)
.setYamlJson(yamlJson).setPngUrl(pngUrl).setYamlUrl(yamlUrl);
positionMapMapper.insert(positionMap);
}
// todo 异步通知所有该楼层区域内所有AGV车地图有更改 - 这个时候AGV应当重新获取地图信息
positionMap = new PositionMapDO().setFloor(floorInt).setArea(areaStr)
.setYamlJson(yamlJson).setPngUrl(pngUrl).setYamlUrl(yamlUrl);
positionMapMapper.insert(positionMap);
}
@Override
@ -480,6 +543,7 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
/**
* 获取地图的文件名
*
* @param floor
* @param area
* @return
@ -505,8 +569,8 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
}
private List<RemoteRobotDTO> getRemoteSingleMapInfomation(Map<String, RobotInformationDO> robotMap, List<String> robotNos,
Map<String, RobotDoingTaskDTO> robotDoingTaskMap,
Map<String, RemoteControllerInformationDO> remoteMap) {
Map<String, RobotDoingTaskDTO> robotDoingTaskMap,
Map<String, RemoteControllerInformationDO> remoteMap) {
RemoteRobotDTO automatic = new RemoteRobotDTO();
RemoteRobotDTO handMovement = new RemoteRobotDTO();
RemoteRobotDTO free = new RemoteRobotDTO();
@ -534,9 +598,9 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
if (RemoteModeEnum.AUTOMATIC.getType().equals(remoteRobotDetail.getRemoteMode())) {
automaticDetail.add(remoteRobotDetail);
}else if (RemoteModeEnum.HAND_MOVEMENT.getType().equals(remoteRobotDetail.getRemoteMode())) {
} else if (RemoteModeEnum.HAND_MOVEMENT.getType().equals(remoteRobotDetail.getRemoteMode())) {
handMovementDetail.add(remoteRobotDetail);
}else {
} else {
freeDetail.add(remoteRobotDetail);
}
}
@ -553,6 +617,6 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
free.setRobotQuantity(freeDetail.size());
free.setRobotList(freeDetail);
return Arrays.asList(automatic,handMovement,free);
return Arrays.asList(automatic, handMovement, free);
}
}

View File

@ -24,6 +24,8 @@ import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -56,7 +58,13 @@ public class RobotWarnMsgServiceImpl extends ServiceImpl<RobotWarnMsgMapper, Rob
@Resource
private UserOperationLogService userOperationLogService;
/**
* 别改事物传播
* @param createReqVO 创建信息
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Long createWarnMsg(RobotWarnMsgSaveReqVO createReqVO) {
// 插入
RobotWarnMsgDO warnMsg = BeanUtils.toBean(createReqVO, RobotWarnMsgDO.class);

View File

@ -9,4 +9,9 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="deleteHouseAreaByMapId">
update ware_house_area
set deleted = '1'
where position_map_id = #{mapId}
</update>
</mapper>

View File

@ -9,4 +9,9 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="deleteHouseLaneByMapId">
update ware_house_lane
set deleted = '1'
where position_map_id = #{mapId}
</update>
</mapper>

View File

@ -77,6 +77,14 @@
update_time,
deleted
</sql>
<update id="deleteHouseLocationByMapId">
update
ware_house_location
set
deleted = '1'
where
map_id = #{mapId}
</update>
<!--查询指定行数据-->
<select id="queryAllByLimit" resultMap="BaseResultMap">
@ -918,5 +926,16 @@
AND t2.deleted = '0'
AND t1.map_id = #{mapId}
</select>
<select id="getInStockLockLocationByMapId"
resultType="cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO">
select
*
from
ware_house_location
where
deleted = '0'
and map_id = #{mapId}
and (location_lock = '0' or location_use_status = '1')
</select>
</mapper>

View File

@ -28,4 +28,12 @@
where
last_user = #{lastUser}
</update>
<update id="deleteDeviceByMapId">
update
device_information
set
deleted = '1'
where
position_map_id = #{mapId}
</update>
</mapper>

View File

@ -9,4 +9,9 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
<update id="deleteParkingByMapId">
update ware_parking_spot
set deleted = '1'
where position_map_id = #{mapId}
</update>
</mapper>

View File

@ -2,6 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.positionmap.PositionChangePointBindingMapper">
<update id="deleteBindIngByMapId">
update ware_position_change_point_binding
set deleted = '1'
where position_map_id = #{mapId}
</update>
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。

View File

@ -153,4 +153,9 @@
from ware_position_map_item
where id = #{id}
</delete>
<update id="deleteByMapId">
update ware_position_map_item
set deleted = '1'
where position_map_id = #{mapId}
</update>
</mapper>

View File

@ -35,6 +35,11 @@
<result property="actualEndControlX" column="actual_end_control_x" jdbcType="DOUBLE"/>
<result property="actualEndControlY" column="actual_end_control_y" jdbcType="DOUBLE"/>
</resultMap>
<update id="deleteByMapId">
update ware_position_map_line
set deleted = '1'
where position_map_id = #{mapId}
</update>
<!--查询单个-->
<select id="queryById" resultMap="BaseResultMap">