修复bug
This commit is contained in:
parent
35da84a95d
commit
51d283bbbf
@ -191,7 +191,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode ROBOT_LAST_TASK_DELETE = new ErrorCode(1-002-034-005, "超过限制的时间,无法继续执行前一个任务");
|
ErrorCode ROBOT_LAST_TASK_DELETE = new ErrorCode(1-002-034-005, "超过限制的时间,无法继续执行前一个任务");
|
||||||
ErrorCode ROBOT_NOT_FOUND_WAIT_ITEM = new ErrorCode(1-002-034-006, "没有空闲的停车点");
|
ErrorCode ROBOT_NOT_FOUND_WAIT_ITEM = new ErrorCode(1-002-034-006, "没有空闲的停车点");
|
||||||
ErrorCode ROBOT_NOT_FOUND_FREE_CHARGING_STATION = new ErrorCode(1-002-034-007, "没有空闲的充电桩");
|
ErrorCode ROBOT_NOT_FOUND_FREE_CHARGING_STATION = new ErrorCode(1-002-034-007, "没有空闲的充电桩");
|
||||||
ErrorCode ROBOT_HAVE_DOING_TASK = new ErrorCode(1-002-034-010, "车辆有处理中的任务");
|
ErrorCode ROBOT_HAVE_DOING_TASK = new ErrorCode(1-002-034-010, "车辆有处理中的任务,不允许修改/删除车辆编号和Mac地址");
|
||||||
|
|
||||||
// ========== 机器人任务主表 1-002-035-000 ==========
|
// ========== 机器人任务主表 1-002-035-000 ==========
|
||||||
ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "机器人任务主表不存在");
|
ErrorCode TASK_NOT_EXISTS = new ErrorCode(1-002-035-001, "机器人任务主表不存在");
|
||||||
|
@ -156,4 +156,11 @@ public class RobotInformationController {
|
|||||||
informationService.doTaskContinue(robotNo);
|
informationService.doTaskContinue(robotNo);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getRobotByFloorAndArea")
|
||||||
|
@Operation(summary = "获取楼层区域对应的机器人编号")
|
||||||
|
@PreAuthorize("@ss.hasPermission('robot:information:getRobotByFloorAndArea')")
|
||||||
|
public CommonResult<List<String>> getRobotByFloorAndArea(@RequestParam("floor") String floor,@RequestParam("area") String area) {
|
||||||
|
return success(informationService.getRobotByFloorAndArea(floor,area));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.system.api.robot.vo.RobotInformationVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHouseLocationSaveReqVO;
|
||||||
@ -12,6 +13,7 @@ import cn.iocoder.yudao.module.system.controller.admin.houselocation.vo.WareHous
|
|||||||
import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.houselocation.WareHouseLocationMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.robot.LocationEnableEnum;
|
import cn.iocoder.yudao.module.system.enums.robot.LocationEnableEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.robot.LocationUseStatusEnum;
|
import cn.iocoder.yudao.module.system.enums.robot.LocationUseStatusEnum;
|
||||||
import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
|
import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
|
||||||
@ -25,6 +27,8 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static cn.hutool.core.collection.CollUtil.isNotEmpty;
|
import static cn.hutool.core.collection.CollUtil.isNotEmpty;
|
||||||
@ -62,8 +66,27 @@ public class HouseLocationServiceImpl extends ServiceImpl<WareHouseLocationMappe
|
|||||||
public void updateHouseLocation(WareHouseLocationSaveReqVO updateReqVO) {
|
public void updateHouseLocation(WareHouseLocationSaveReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateHouseLocationExists(updateReqVO.getId());
|
validateHouseLocationExists(updateReqVO.getId());
|
||||||
String str = "修改库位信息 ";
|
|
||||||
WareHouseLocationDO wareHouseLocationDO = houseLocationMapper.selectById(updateReqVO.getId());
|
WareHouseLocationDO wareHouseLocationDO = houseLocationMapper.selectById(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
WareHouseLocationDO updateObj = BeanUtils.toBean(updateReqVO, WareHouseLocationDO.class);
|
||||||
|
|
||||||
|
String str = getChangeInfo(wareHouseLocationDO, updateObj);
|
||||||
|
if (ObjectUtil.isNotEmpty(str)) {
|
||||||
|
str = "修改库位信息:" + updateReqVO.getLocationNo() + "_" + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
|
.operateAction(str)
|
||||||
|
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||||
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
|
|
||||||
|
houseLocationMapper.updateById(updateObj);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getChangeInfo(WareHouseLocationDO wareHouseLocationDO, WareHouseLocationDO updateReqVO) {
|
||||||
|
String str = "";
|
||||||
if (!wareHouseLocationDO.getLocationEnable().equals(updateReqVO.getLocationEnable())) {
|
if (!wareHouseLocationDO.getLocationEnable().equals(updateReqVO.getLocationEnable())) {
|
||||||
if (LocationEnableEnum.YES.getType().equals(updateReqVO.getLocationEnable())) {
|
if (LocationEnableEnum.YES.getType().equals(updateReqVO.getLocationEnable())) {
|
||||||
str = str + "设置库位" + LocationEnableEnum.YES.getMsg() + " ";
|
str = str + "设置库位" + LocationEnableEnum.YES.getMsg() + " ";
|
||||||
@ -91,15 +114,16 @@ public class HouseLocationServiceImpl extends ServiceImpl<WareHouseLocationMappe
|
|||||||
str = str + "设置库位物料信息为 " + updateReqVO.getSkuInfo();
|
str = str + "设置库位物料信息为 " + updateReqVO.getSkuInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
if (!wareHouseLocationDO.getLocationUseStatus().equals(updateReqVO.getLocationUseStatus())
|
||||||
.operateAction(str)
|
&& ZeroOneEnum.ZERO.getType().equals(updateReqVO.getLocationUseStatus())) {
|
||||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
str = str + "设置库位锁定状态为正常" ;
|
||||||
userOperationLogService.createUserOperationLog(operationLog);
|
}else if (!wareHouseLocationDO.getLocationUseStatus().equals(updateReqVO.getLocationUseStatus())
|
||||||
// 更新
|
&& ZeroOneEnum.ONE.getType().equals(updateReqVO.getLocationUseStatus())) {
|
||||||
WareHouseLocationDO updateObj = BeanUtils.toBean(updateReqVO, WareHouseLocationDO.class);
|
str = str + "设置库位锁定状态为锁定" ;
|
||||||
houseLocationMapper.updateById(updateObj);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -156,15 +180,39 @@ public class HouseLocationServiceImpl extends ServiceImpl<WareHouseLocationMappe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {
|
public void updateHouseLocationList(List<WareHouseLocationSaveReqVO> list) {
|
||||||
List<WareHouseLocationDO> locationDOList = BeanUtils.toBean(list, WareHouseLocationDO.class);
|
List<WareHouseLocationDO> locationDOList = BeanUtils.toBean(list, WareHouseLocationDO.class);
|
||||||
|
List<String> locationNos = locationDOList.stream().map(WareHouseLocationDO::getLocationNo).collect(Collectors.toList());
|
||||||
|
List<WareHouseLocationDO> locations = houseLocationMapper.selectList(new LambdaQueryWrapper<WareHouseLocationDO>()
|
||||||
|
.in(WareHouseLocationDO::getLocationNo, locationNos));
|
||||||
|
Map<Long, WareHouseLocationDO> locationMap =
|
||||||
|
locations.stream().collect(Collectors.toMap(WareHouseLocationDO::getId, Function.identity(), (v1, v2) -> v1));
|
||||||
|
|
||||||
houseLocationMapper.updateById(locationDOList);
|
houseLocationMapper.updateById(locationDOList);
|
||||||
|
|
||||||
List<String> locationNos = locationDOList.stream().map(WareHouseLocationDO::getLocationNo).collect(Collectors.toList());
|
StringBuilder str = new StringBuilder();
|
||||||
String str = StringUtils.join(locationNos, ",");
|
for (WareHouseLocationDO updateLocation : locationDOList) {
|
||||||
|
WareHouseLocationDO oldLocation = locationMap.get(updateLocation.getId());
|
||||||
|
if (ObjectUtil.isEmpty(oldLocation)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String updateStr = getChangeInfo(oldLocation, updateLocation);
|
||||||
|
if (ObjectUtil.isNotEmpty(updateStr)) {
|
||||||
|
str.append("修改库位信息:").append(oldLocation.getLocationNo()).append("_").append(updateStr).append(";");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ObjectUtil.isEmpty(str.toString())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str.length() > 100) {
|
||||||
|
str = new StringBuilder(str.substring(0, 95));
|
||||||
|
}
|
||||||
|
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
.operateAction(str)
|
.operateAction(str.toString())
|
||||||
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||||
userOperationLogService.createUserOperationLog(operationLog);
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
}
|
}
|
||||||
|
@ -17,15 +17,18 @@ import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO;
|
|||||||
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.information.DeviceInformationMapper;
|
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.dal.mysql.positionmap.PositionMapMapper;
|
||||||
import cn.iocoder.yudao.module.system.enums.device.DeviceAttributeEnum;
|
import cn.iocoder.yudao.module.system.enums.device.DeviceAttributeEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.device.DeviceStatusEnum;
|
import cn.iocoder.yudao.module.system.enums.device.DeviceStatusEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.device.DeviceTypeEnum;
|
import cn.iocoder.yudao.module.system.enums.device.DeviceTypeEnum;
|
||||||
import cn.iocoder.yudao.module.system.enums.device.PictureConfigEnum;
|
import cn.iocoder.yudao.module.system.enums.device.PictureConfigEnum;
|
||||||
|
import cn.iocoder.yudao.module.system.enums.item.PositionMapItemEnum;
|
||||||
import cn.iocoder.yudao.module.system.service.config.CommonConfigService;
|
import cn.iocoder.yudao.module.system.service.config.CommonConfigService;
|
||||||
import cn.iocoder.yudao.module.system.service.dict.DictDataService;
|
import cn.iocoder.yudao.module.system.service.dict.DictDataService;
|
||||||
import cn.iocoder.yudao.module.system.service.log.UserOperationLogService;
|
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.robot.RobotWarnMsgService;
|
import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService;
|
||||||
import cn.iocoder.yudao.module.system.util.modbus3.ModbusUtils;
|
import cn.iocoder.yudao.module.system.util.modbus3.ModbusUtils;
|
||||||
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
import cn.iocoder.yudao.module.system.util.redis.RedisUtil;
|
||||||
@ -83,6 +86,9 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|||||||
@Resource
|
@Resource
|
||||||
private CommonConfigService configService;
|
private CommonConfigService configService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PositionMapItemService positionMapItemService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createInformation(DeviceInformationSaveReqVO createReqVO) {
|
public Long createInformation(DeviceInformationSaveReqVO createReqVO) {
|
||||||
// -- 先判断库里是否有相通的mac地址数据
|
// -- 先判断库里是否有相通的mac地址数据
|
||||||
@ -138,6 +144,7 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteInformation(Long id) {
|
public void deleteInformation(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateInformationExists(id);
|
validateInformationExists(id);
|
||||||
@ -148,6 +155,13 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|||||||
// 删除
|
// 删除
|
||||||
informationMapper.deleteById(id);
|
informationMapper.deleteById(id);
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(deviceInformationDO.getPositionMapItemId())) {
|
||||||
|
PositionMapItemDO positionMapItem = positionMapItemService.getPositionMapItem(deviceInformationDO.getPositionMapItemId());
|
||||||
|
positionMapItem.setType(PositionMapItemEnum.PATH.getType());
|
||||||
|
positionMapItem.setDataJson(null);
|
||||||
|
positionMapItemService.updateById(positionMapItem);
|
||||||
|
}
|
||||||
|
|
||||||
userOperationLogService.createUserOperationLog(operationLog);
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,10 +321,12 @@ public class DeviceInformationServiceImpl extends ServiceImpl<DeviceInformationM
|
|||||||
// todo 需要设置设备通讯的时间
|
// todo 需要设置设备通讯的时间
|
||||||
for (DeviceInformationRespVO deviceInformationDO : beans) {
|
for (DeviceInformationRespVO deviceInformationDO : beans) {
|
||||||
|
|
||||||
|
PositionMapDO positionMapDO = positionMap.get(deviceInformationDO.getPositionMapId());
|
||||||
if (ObjectUtil.isNotEmpty(deviceInformationDO.getPositionMapId())
|
if (ObjectUtil.isNotEmpty(deviceInformationDO.getPositionMapId())
|
||||||
&& ObjectUtil.isNotEmpty(positionMap.get(deviceInformationDO.getPositionMapId()))) {
|
&& ObjectUtil.isNotEmpty(positionMapDO)) {
|
||||||
deviceInformationDO.setFloor(positionMap.get(deviceInformationDO.getPositionMapId()).getFloor() + "");
|
deviceInformationDO.setFloor(positionMapDO.getFloor() + "");
|
||||||
deviceInformationDO.setArea(positionMap.get(deviceInformationDO.getPositionMapId()).getArea());
|
deviceInformationDO.setArea(positionMapDO.getArea());
|
||||||
|
deviceInformationDO.setDeviceLocation(positionMapDO.getFloor()+"层-"+positionMapDO.getArea());
|
||||||
}
|
}
|
||||||
|
|
||||||
String deviceKey = DeviceChcheConstant.DEVICE_LAST_TIME + deviceInformationDO.getMacAddress();
|
String deviceKey = DeviceChcheConstant.DEVICE_LAST_TIME + deviceInformationDO.getMacAddress();
|
||||||
|
@ -158,4 +158,12 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
|||||||
* @param orderType
|
* @param orderType
|
||||||
*/
|
*/
|
||||||
void robotCloseTaskDetail(String id, String mac, String orderType);
|
void robotCloseTaskDetail(String id, String mac, String orderType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取楼层区域对应的机器人编号
|
||||||
|
* @param floor
|
||||||
|
* @param area
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> getRobotByFloorAndArea(String floor, String area);
|
||||||
}
|
}
|
||||||
|
@ -208,8 +208,14 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
// 校验存在
|
// 校验存在
|
||||||
validateInformationExists(updateReqVO.getId());
|
validateInformationExists(updateReqVO.getId());
|
||||||
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
|
RobotInformationDO robotInformationDO = informationMapper.selectById(updateReqVO.getId());
|
||||||
if (robotInformationDO == null) {
|
|
||||||
throw exception(ROBOT_INFORMATION_NOT_EXISTS);
|
if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())
|
||||||
|
|| !updateReqVO.getMacAddress().equals(robotInformationDO.getMacAddress())) {
|
||||||
|
List<RobotTaskDO> list = taskMapper.selectDoingTaskByRobotNo(robotInformationDO.getRobotNo());
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotEmpty(list)) {
|
||||||
|
throw exception(ROBOT_HAVE_DOING_TASK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//校验MAC地址
|
//校验MAC地址
|
||||||
@ -747,14 +753,21 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
|| PathTaskTypeEnum.RELEASE.getType().equals(log.getCommandType())) {
|
|| PathTaskTypeEnum.RELEASE.getType().equals(log.getCommandType())) {
|
||||||
takeReleaseCleanTrafficManagement(robotTaskDetail);
|
takeReleaseCleanTrafficManagement(robotTaskDetail);
|
||||||
}
|
}
|
||||||
//不释放机器人状态,怕机器人接新任务
|
|
||||||
|
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||||
|
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||||
|
.last("limit 1"));
|
||||||
|
robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
|
||||||
|
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||||
|
informationMapper.updateById(robotInformationDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RobotTaskDetailActionLogDO closeTask(String robotNo) {
|
public RobotTaskDetailActionLogDO closeTask(String robotNo) {
|
||||||
CleanAgvDTO build = CleanAgvDTO.builder().robotNo(robotNo).build();
|
CleanAgvDTO build = CleanAgvDTO.builder().robotNo(robotNo).build();
|
||||||
commonApi.commonMethod(build, PathPlanningTopicConstant.CLEAN_AGV);
|
commonApi.commonMethod(build, PathPlanningTopicConstant.CLEAN_AGV);
|
||||||
RobotTaskDetailActionLogDO log = taskDetailActionLogService.getLastTaskByRobotNo(robotNo);
|
RobotTaskDetailActionLogDO log = taskDetailActionLogService.getLastTaskByRobotNo(robotNo);
|
||||||
if (ObjectUtil.isEmpty(log) || ActionStatusEnum.DONE.getType().equals(log.getActionStatus())) {
|
if (ObjectUtil.isEmpty(log) || ActionStatusEnum.DONE.getType().equals(log.getActionStatus())
|
||||||
|
|| ActionStatusEnum.CLOSE.getType().equals(log.getActionStatus())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String mac = getMacByRobotNo(robotNo);
|
String mac = getMacByRobotNo(robotNo);
|
||||||
@ -768,6 +781,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
* @param robotNo
|
* @param robotNo
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void doTaskContinue(String robotNo) {
|
public void doTaskContinue(String robotNo) {
|
||||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
.operateAction("继续做任务 " + robotNo)
|
.operateAction("继续做任务 " + robotNo)
|
||||||
@ -805,6 +819,17 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
if (ObjectUtil.isNotEmpty(msg)) {
|
if (ObjectUtil.isNotEmpty(msg)) {
|
||||||
throw exception0(TASK_CHECK_EXCEPTION.getCode(), msg);
|
throw exception0(TASK_CHECK_EXCEPTION.getCode(), msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||||
|
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||||
|
.last("limit 1"));
|
||||||
|
if (PathTaskTypeEnum.CHARGE.getType().equals(pathPlanning.getOrderType())
|
||||||
|
|| PathTaskTypeEnum.AUTO_CHARGE.getType().equals(pathPlanning.getOrderType())) {
|
||||||
|
robotInformationDO.setRobotStatus(RobotStatusEnum.CHARGE.getType());
|
||||||
|
}else {
|
||||||
|
robotInformationDO.setRobotStatus(RobotStatusEnum.DOING.getType());
|
||||||
|
}
|
||||||
|
informationMapper.updateById(robotInformationDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1050,5 +1075,36 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
|||||||
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
commonApi.commonMethod(robotTask, robotTask.getTopic());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取楼层区域对应的机器人编号
|
||||||
|
* @param floor
|
||||||
|
* @param area
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> getRobotByFloorAndArea(String floor, String area) {
|
||||||
|
RobotInformationDO query = new RobotInformationDO();
|
||||||
|
List<RobotInformationDO> robotInformations = informationMapper.queryAllByLimit(query);
|
||||||
|
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
if (ObjectUtil.isEmpty(robotInformations)) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (RobotInformationDO robotInformationDO : robotInformations) {
|
||||||
|
String floorAreaKey = RobotTaskChcheConstant.ROBOT_FLOOR_AREA + robotInformationDO.getMacAddress();
|
||||||
|
Object floorAreaObject = redisUtil.get(floorAreaKey);
|
||||||
|
if (ObjectUtil.isEmpty(floorAreaObject)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
FloorZoneDTO floorZoneDTO = JSONUtil.toBean((String) floorAreaObject, FloorZoneDTO.class);
|
||||||
|
if (floor.equals(floorZoneDTO.getFloor()) && area.equals(floorZoneDTO.getArea()) ) {
|
||||||
|
list.add(robotInformationDO.getRobotNo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -181,13 +181,19 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
|||||||
|
|
||||||
String addResult = "";
|
String addResult = "";
|
||||||
if (lock.tryLock(60l, TimeUnit.MINUTES)) {
|
if (lock.tryLock(60l, TimeUnit.MINUTES)) {
|
||||||
try {
|
/*try {
|
||||||
addResult = addTask(createReqVO);
|
addResult = addTask(createReqVO);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("下发任务出现异常 :{}", e);
|
log.error("下发任务出现异常 :{}", e);
|
||||||
addResult = ObjectUtil.isNotEmpty(e.getMessage()) ? e.getMessage(): "创建任务失败";
|
addResult = ObjectUtil.isNotEmpty(e.getMessage()) ? e.getMessage(): "创建任务失败";
|
||||||
} finally {
|
} finally {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
try {
|
||||||
|
addResult = addTask(createReqVO);
|
||||||
|
} finally {
|
||||||
|
lock.unlock();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||||
|
@ -272,6 +272,11 @@ public class AdminUserServiceImpl implements AdminUserService {
|
|||||||
// 2.2 删除用户岗位
|
// 2.2 删除用户岗位
|
||||||
userPostMapper.deleteByUserId(id);
|
userPostMapper.deleteByUserId(id);
|
||||||
|
|
||||||
|
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||||
|
.operateAction("删除用户 " + user.getUsername())
|
||||||
|
.nickName(SecurityFrameworkUtils.getLoginUserNickname()).build();
|
||||||
|
userOperationLogService.createUserOperationLog(operationLog);
|
||||||
|
|
||||||
// 3. 记录操作日志上下文
|
// 3. 记录操作日志上下文
|
||||||
LogRecordContext.putVariable("user", user);
|
LogRecordContext.putVariable("user", user);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user