修改地图添加校验
This commit is contained in:
parent
bf2fdaa023
commit
7a1627711c
@ -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, "车辆自动移库不存在");
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -27,4 +27,9 @@ public interface WareHouseLaneMapper extends BaseMapperX<WareHouseLaneDO> {
|
||||
.orderByDesc(WareHouseLaneDO::getId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据地图id删除
|
||||
* @param mapId
|
||||
*/
|
||||
void deleteHouseLaneByMapId(@Param("mapId") Long mapId);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -75,4 +75,10 @@ public interface HouseAreaService extends IService<HouseAreaDO> {
|
||||
* @param id
|
||||
*/
|
||||
void delete(Long id);
|
||||
|
||||
/**
|
||||
* 根据地图id删除
|
||||
* @param mapId
|
||||
*/
|
||||
void deleteHouseAreaByMapId(Long mapId);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -45,4 +45,10 @@ public interface WareHouseLaneService extends IService<WareHouseLaneDO> {
|
||||
* @param id
|
||||
*/
|
||||
void delete(Long id);
|
||||
|
||||
/**
|
||||
* 根据地图id删除
|
||||
* @param mapId
|
||||
*/
|
||||
void deleteHouseLaneByMapId(Long mapId);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -137,4 +137,10 @@ public interface DeviceInformationService extends IService<DeviceInformationDO>
|
||||
* @return
|
||||
*/
|
||||
String getMapImageUrl(Integer deviceType);
|
||||
|
||||
/**
|
||||
* 根据地图ID删除
|
||||
* @param id
|
||||
*/
|
||||
void deleteDeviceByMapId(Long id);
|
||||
}
|
||||
|
@ -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};
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -84,4 +84,9 @@ public class ParkingSpotServiceImpl extends ServiceImpl<ParkingSpotMapper, Parki
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteParkingByMapId(Long mapId) {
|
||||
parkingSpotMapper.deleteParkingByMapId(mapId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -169,5 +169,10 @@ public class PositionChangePointBindingServiceImpl extends ServiceImpl<PositionC
|
||||
.notIn(PositionChangePointBindingDO::getEndPointId,startPointIds));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBindingByMapId(Long mapId) {
|
||||
positionChangePointBindingMapper.deleteBindIngByMapId(mapId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -68,4 +68,10 @@ public interface PositionMapLineService extends IService<PositionMapLineDO> {
|
||||
* @param lineList
|
||||
*/
|
||||
void batchSaveLines(List<PositionMapLineDO> lineList);
|
||||
|
||||
/**
|
||||
* 根据地图ID删除
|
||||
* @param id
|
||||
*/
|
||||
void deleteByMapId(Long mapId);
|
||||
}
|
||||
|
@ -83,4 +83,9 @@ public class PositionMapLineServiceImpl extends ServiceImpl<PositionMapLineMappe
|
||||
positionMapLineMapper.insertBatch(lineList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByMapId(Long mapId) {
|
||||
positionMapLineMapper.deleteByMapId(mapId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
@ -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。
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
Loading…
Reference in New Issue
Block a user