告警信息
This commit is contained in:
parent
b4d12cf03d
commit
a9a4244290
@ -25,4 +25,7 @@ public class RobotDimensionsDTO {
|
|||||||
|
|
||||||
@Schema(description = "中心到车尾距离(单位米)")
|
@Schema(description = "中心到车尾距离(单位米)")
|
||||||
private Double robotCenterTail;
|
private Double robotCenterTail;
|
||||||
|
|
||||||
|
@Schema(description = "mac地址")
|
||||||
|
private String macAddress;
|
||||||
}
|
}
|
||||||
|
@ -141,8 +141,9 @@ public class MqttFactory {
|
|||||||
return BeanUtils.getBean(PathPlanningInitDataServiceImpl.class);
|
return BeanUtils.getBean(PathPlanningInitDataServiceImpl.class);
|
||||||
case TASK_ASSIGNMENT_FEEDBACK:
|
case TASK_ASSIGNMENT_FEEDBACK:
|
||||||
return BeanUtils.getBean(PathPlanningDistributionTaskServiceImpl.class);
|
return BeanUtils.getBean(PathPlanningDistributionTaskServiceImpl.class);
|
||||||
|
case TASK_ASSIGNMENT_FAIL:
|
||||||
|
return BeanUtils.getBean(PathPlanningDistributionFailServiceImpl.class);
|
||||||
default :
|
default :
|
||||||
// case ROBOT_TASK_STATUS:
|
|
||||||
return BeanUtils.getBean(RobotTaskStatusServiceImpl.class);
|
return BeanUtils.getBean(RobotTaskStatusServiceImpl.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,8 @@ public enum DefineSubTopicEnum {
|
|||||||
ROBOT_TASK_STATUS("ROBOT_TASK_STATUS", 0,"机器人任务完成上报"),
|
ROBOT_TASK_STATUS("ROBOT_TASK_STATUS", 0,"机器人任务完成上报"),
|
||||||
ROBOT_GENERICS_STATUS("ROBOT_GENERICS_STATUS", 0,"机器人异常"),
|
ROBOT_GENERICS_STATUS("ROBOT_GENERICS_STATUS", 0,"机器人异常"),
|
||||||
SYNCHRONOUS_ALL_MAP_REQUEST("SYNCHRONOUS_ALL_MAP_REQUEST", 0,"路径规划需要初始数据上报"),
|
SYNCHRONOUS_ALL_MAP_REQUEST("SYNCHRONOUS_ALL_MAP_REQUEST", 0,"路径规划需要初始数据上报"),
|
||||||
TASK_ASSIGNMENT_FEEDBACK("TASK_ASSIGNMENT_FEEDBACK", 0,"路径规划任务分配上报");
|
TASK_ASSIGNMENT_FEEDBACK("TASK_ASSIGNMENT_FEEDBACK", 0,"路径规划任务分配上报"),
|
||||||
|
TASK_ASSIGNMENT_FAIL("TASK_ASSIGNMENT_FAIL", 0,"路径规划失败上报");
|
||||||
|
|
||||||
|
|
||||||
private final String topic;
|
private final String topic;
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package cn.iododer.yudao.module.mqtt.service;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.api.path.PathApi;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class PathPlanningDistributionFailServiceImpl implements MqttService{
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PathApi pathApi;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void analysisMessage(String message) {
|
||||||
|
log.info("路径规划失败信息上报 :{}", message);
|
||||||
|
pathApi.ppDistributionTaskFail(message);
|
||||||
|
}
|
||||||
|
}
|
@ -20,4 +20,8 @@ public interface PathApi {
|
|||||||
@PostMapping(PREFIX + "/ppDistributionTask")
|
@PostMapping(PREFIX + "/ppDistributionTask")
|
||||||
@Operation(summary = "路径规划需要初始化信息")
|
@Operation(summary = "路径规划需要初始化信息")
|
||||||
void ppDistributionTask(@RequestParam("message") String message);
|
void ppDistributionTask(@RequestParam("message") String message);
|
||||||
|
|
||||||
|
@PostMapping(PREFIX + "/ppDistributionTaskFail")
|
||||||
|
@Operation(summary = "路径规划需要初始化信息")
|
||||||
|
void ppDistributionTaskFail(@RequestParam("message") String message);
|
||||||
}
|
}
|
||||||
|
@ -239,4 +239,7 @@ public interface ErrorCodeConstants {
|
|||||||
|
|
||||||
// ========== 循环任务点位 1_002_046_001==========
|
// ========== 循环任务点位 1_002_046_001==========
|
||||||
ErrorCode TASK_CYCLE_NOT_EXISTS = new ErrorCode(1_002_046_001, "循环任务点位不存在");
|
ErrorCode TASK_CYCLE_NOT_EXISTS = new ErrorCode(1_002_046_001, "循环任务点位不存在");
|
||||||
|
// ========== 用户操作记录 1_002_047_001 ==========
|
||||||
|
ErrorCode OPERATE_LOG_NOT_EXISTS = new ErrorCode(1_002_047_001, "用户操作记录不存在");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
|
|||||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.service.path.PathPlanningService;
|
import cn.iocoder.yudao.module.system.service.path.PathPlanningService;
|
||||||
import cn.iocoder.yudao.module.system.service.robot.RobotTaskService;
|
import cn.iocoder.yudao.module.system.service.robot.RobotTaskService;
|
||||||
|
import cn.iocoder.yudao.module.system.service.robot.RobotWarnMsgService;
|
||||||
import cn.iocoder.yudao.module.system.service.tool.ToolsService;
|
import cn.iocoder.yudao.module.system.service.tool.ToolsService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -35,12 +36,14 @@ public class PathApiImpl implements PathApi {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ThreadPoolTaskExecutor taskExecutor;
|
private ThreadPoolTaskExecutor taskExecutor;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RobotWarnMsgService warnMsgService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发送初始化信息给PP
|
* 发送初始化信息给PP
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void pathInitData() {
|
public void pathInitData() {
|
||||||
// new Thread(() -> {
|
|
||||||
taskExecutor.execute(() -> {
|
taskExecutor.execute(() -> {
|
||||||
TenantContextHolder.setTenantId(1L);
|
TenantContextHolder.setTenantId(1L);
|
||||||
log.info("初始化数据发送个PP---开始");
|
log.info("初始化数据发送个PP---开始");
|
||||||
@ -55,8 +58,6 @@ public class PathApiImpl implements PathApi {
|
|||||||
toolsService.sendPPsortConfig();
|
toolsService.sendPPsortConfig();
|
||||||
log.info("初始化数据发送个PP---完成");
|
log.info("初始化数据发送个PP---完成");
|
||||||
});
|
});
|
||||||
|
|
||||||
// }).start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,12 +75,14 @@ public class PathApiImpl implements PathApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PP处理任务失败
|
||||||
|
* @param message
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void ppDistributionTaskFail(String message) {
|
||||||
|
warnMsgService.addWarnMsg(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ public class RequestProcessor {
|
|||||||
|
|
||||||
public RequestProcessor() {
|
public RequestProcessor() {
|
||||||
// 每秒执行一次 - 处理并发送数据 - 避免数据丢失
|
// 每秒执行一次 - 处理并发送数据 - 避免数据丢失
|
||||||
scheduler.scheduleAtFixedRate(this::processAndSend, 1, 1, TimeUnit.SECONDS);
|
scheduler.scheduleAtFixedRate(this::processAndSend, 300, 300, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleRequest(String map, String mac, String data) {
|
public void handleRequest(String map, String mac, String data) {
|
||||||
|
@ -83,10 +83,11 @@ public class RobotStatusApiImpl implements RobotStatusApi {
|
|||||||
String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + robotStatusDataDTO.getMac();
|
String cargoDetectedKey = RobotTaskChcheConstant.ROBOT_CARGO_DETECTED + robotStatusDataDTO.getMac();
|
||||||
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT_SOC + robotStatusDataDTO.getMac();
|
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT_SOC + robotStatusDataDTO.getMac();
|
||||||
// todo 后续需要改为从车机上报
|
// todo 后续需要改为从车机上报
|
||||||
/*redisUtil.set(taskStatusKey, "IDLE", robotPositionCacheTime);
|
|
||||||
redisUtil.set(cargoDetectedKey, false, robotPositionCacheTime);*/
|
/*redisUtil.set(taskStatusKey, robotStatusDataDTO.getData().getTask_status(), robotPositionCacheTime);
|
||||||
redisUtil.set(taskStatusKey, robotStatusDataDTO.getData().getTask_status(), robotPositionCacheTime);
|
redisUtil.set(cargoDetectedKey, robotStatusDataDTO.getData().getCargo_detected(), robotPositionCacheTime);*/
|
||||||
redisUtil.set(cargoDetectedKey, robotStatusDataDTO.getData().getCargo_detected(), robotPositionCacheTime);
|
redisUtil.set(taskStatusKey, "IDLE", robotPositionCacheTime);
|
||||||
|
redisUtil.set(cargoDetectedKey, false, robotPositionCacheTime);
|
||||||
|
|
||||||
Object object = redisUtil.get(pose2dKey);
|
Object object = redisUtil.get(pose2dKey);
|
||||||
RobotStatusDataPoseDTO robotStatusDataPoseDTO = JSONUtil.toBean((String) object, RobotStatusDataPoseDTO.class);
|
RobotStatusDataPoseDTO robotStatusDataPoseDTO = JSONUtil.toBean((String) object, RobotStatusDataPoseDTO.class);
|
||||||
@ -104,6 +105,9 @@ public class RobotStatusApiImpl implements RobotStatusApi {
|
|||||||
robotStatusDataPoseDTO.setArea(robotStatusDataDTO.getData().getFloor_zone().getArea());
|
robotStatusDataPoseDTO.setArea(robotStatusDataDTO.getData().getFloor_zone().getArea());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
robotStatusDataPoseDTO.setFloor("1");
|
||||||
|
robotStatusDataPoseDTO.setArea("D区");
|
||||||
|
|
||||||
robotStatusDataPoseDTO.setRobotNo(robotNo);
|
robotStatusDataPoseDTO.setRobotNo(robotNo);
|
||||||
redisUtil.set(pose2dKey, JSON.toJSONString(robotStatusDataPoseDTO), robotPositionCacheTime);
|
redisUtil.set(pose2dKey, JSON.toJSONString(robotStatusDataPoseDTO), robotPositionCacheTime);
|
||||||
pathPlanningApi.synchronousLineObject(robotStatusDataPoseDTO, PathPlanningTopicConstant.AGV_POSE);
|
pathPlanningApi.synchronousLineObject(robotStatusDataPoseDTO, PathPlanningTopicConstant.AGV_POSE);
|
||||||
|
@ -175,7 +175,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
locationIds.add(robotTaskDetailDO.getToLocationId());
|
locationIds.add(robotTaskDetailDO.getToLocationId());
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(locationIds)) {
|
if (ObjectUtil.isNotEmpty(locationIds)) {
|
||||||
locationMapper.releaseLocationLockList(locationIds, robotTaskDetailDO.getId()
|
locationMapper.releaseLocationLockList(locationIds, robotTaskDetailDO.getRobotTaskId()
|
||||||
, LocationLockEnum.YES.getType());
|
, LocationLockEnum.YES.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,7 +200,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
.warnMsg(robotNo +"_"+robotCompleteTaskDTO.getMessage())
|
.warnMsg(robotNo +"_"+robotCompleteTaskDTO.getMessage())
|
||||||
.warnSolve(robotCompleteTaskDTO.getSolution())
|
.warnSolve(robotCompleteTaskDTO.getSolution())
|
||||||
.build();
|
.build();
|
||||||
warnMsgMapper.insertBatch(Arrays.asList(warnMsg));
|
warnMsgMapper.insert(warnMsg);
|
||||||
|
|
||||||
warnMsgService.sendWarnMsgToWebsocket(warnMsg.getWarnMsg());
|
warnMsgService.sendWarnMsgToWebsocket(warnMsg.getWarnMsg());
|
||||||
}
|
}
|
||||||
@ -259,8 +259,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
|||||||
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrder_id());
|
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrder_id());
|
||||||
List<RobotTaskDetailDO> taskDetails = robotTaskDetailMapper.queryByTaskId(robotTaskDetailDO.getRobotTaskId());
|
List<RobotTaskDetailDO> taskDetails = robotTaskDetailMapper.queryByTaskId(robotTaskDetailDO.getRobotTaskId());
|
||||||
boolean done =
|
boolean done =
|
||||||
taskDetails.stream().allMatch(v -> (v.getTaskStatus().equals(RobotTaskDetailStatusEnum.DONE.getType())
|
taskDetails.stream().noneMatch(v -> (v.getTaskStatus().equals(RobotTaskDetailStatusEnum.NEW.getType())));
|
||||||
|| v.getTaskStatus().equals(RobotTaskDetailStatusEnum.CLOSE.getType())));
|
|
||||||
if (done) {
|
if (done) {
|
||||||
RobotTaskDO robotTaskDO = new RobotTaskDO();
|
RobotTaskDO robotTaskDO = new RobotTaskDO();
|
||||||
robotTaskDO.setId(taskDetails.get(0).getRobotTaskId());
|
robotTaskDO.setId(taskDetails.get(0).getRobotTaskId());
|
||||||
|
@ -8,10 +8,12 @@ public class RobotExecutionStateConstant {
|
|||||||
public static Integer UN_DO = 0;
|
public static Integer UN_DO = 0;
|
||||||
//正在做
|
//正在做
|
||||||
public static Integer DOING = 1;
|
public static Integer DOING = 1;
|
||||||
//已完成
|
//已暂停
|
||||||
public static Integer DONE = 2;
|
public static Integer STOP = 2;
|
||||||
//已取消
|
//已取消
|
||||||
public static Integer CLOSE = 3;
|
public static Integer CLOSE = 3;
|
||||||
//已失败、异常
|
//已失败、异常
|
||||||
public static Integer FAIL = 4;
|
public static Integer FAIL = 4;
|
||||||
|
//已完成
|
||||||
|
public static Integer DONE = 5;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
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.excel.core.util.ExcelUtils;
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDTO;
|
import cn.iocoder.yudao.module.system.api.robot.dto.RobotStatusDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.*;
|
import cn.iocoder.yudao.module.system.controller.admin.robot.vo.*;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotInformationDO;
|
||||||
|
@ -11,7 +11,8 @@ import lombok.Getter;
|
|||||||
public enum RobotWarnType {
|
public enum RobotWarnType {
|
||||||
|
|
||||||
ROBOT_WARN(1),//告警
|
ROBOT_WARN(1),//告警
|
||||||
USER_OPERATE(2);//用户操作
|
USER_OPERATE(2),//用户操作
|
||||||
|
PATH(3);//路径规划
|
||||||
/**
|
/**
|
||||||
* 类型
|
* 类型
|
||||||
*/
|
*/
|
||||||
|
@ -46,9 +46,9 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy {
|
|||||||
int max = wareHouseLocationDOS.stream().map(WareHouseLocationDO::getLocationNo).filter(StrUtil::isNotEmpty)
|
int max = wareHouseLocationDOS.stream().map(WareHouseLocationDO::getLocationNo).filter(StrUtil::isNotEmpty)
|
||||||
.mapToInt(s -> Integer.parseInt(s.substring(s.length() - 1))).max().orElse(1);
|
.mapToInt(s -> Integer.parseInt(s.substring(s.length() - 1))).max().orElse(1);
|
||||||
int locationStorey = wareHouseLocationDOS.size();
|
int locationStorey = wareHouseLocationDOS.size();
|
||||||
Long locationNumber = 0l;
|
Long locationNumber = null;
|
||||||
if (ObjectUtil.isNotEmpty(nodeBaseDTOS)) {
|
if (ObjectUtil.isNotEmpty(item.getLocationNumber())) {
|
||||||
locationNumber = nodeBaseDTOS.get(0).getLocationNumber();
|
locationNumber = item.getLocationNumber();
|
||||||
}
|
}
|
||||||
for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) {
|
for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) {
|
||||||
wareHouseLocationDO.setLocationX(item.getLocationX());
|
wareHouseLocationDO.setLocationX(item.getLocationX());
|
||||||
@ -65,7 +65,7 @@ public class HouseLocationStrategyImpl implements NodeProcessingStrategy {
|
|||||||
}
|
}
|
||||||
wareHouseLocationDO.setMapId(positionMapId);
|
wareHouseLocationDO.setMapId(positionMapId);
|
||||||
wareHouseLocationDO.setMapItemId(item.getId());
|
wareHouseLocationDO.setMapItemId(item.getId());
|
||||||
if (ObjectUtil.isNotEmpty(locationNumber)) {
|
if (ObjectUtil.isNotEmpty(locationNumber) && ObjectUtil.isEmpty(wareHouseLocationDO.getLocationNumber())) {
|
||||||
wareHouseLocationDO.setLocationNumber(locationNumber);
|
wareHouseLocationDO.setLocationNumber(locationNumber);
|
||||||
locationNumber = locationNumber - 10;
|
locationNumber = locationNumber - 10;
|
||||||
}
|
}
|
||||||
|
@ -55,4 +55,10 @@ public interface RobotWarnMsgService extends IService<RobotWarnMsgDO> {
|
|||||||
PageResult<RobotWarnMsgDO> getWarnMsgPage(RobotWarnMsgPageReqVO pageReqVO);
|
PageResult<RobotWarnMsgDO> getWarnMsgPage(RobotWarnMsgPageReqVO pageReqVO);
|
||||||
|
|
||||||
void sendWarnMsgToWebsocket(Object errorMsg);
|
void sendWarnMsgToWebsocket(Object errorMsg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加告警信息
|
||||||
|
* @param message
|
||||||
|
*/
|
||||||
|
void addWarnMsg(String message);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapDO;
|
|||||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotWarnMsgDO;
|
||||||
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.dal.mysql.robot.RobotWarnMsgMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotWarnMsgMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.enums.robot.RobotWarnType;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -20,6 +21,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
@ -99,4 +101,16 @@ public class RobotWarnMsgServiceImpl extends ServiceImpl<RobotWarnMsgMapper, Rob
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addWarnMsg(String message) {
|
||||||
|
RobotWarnMsgDO warnMsg = RobotWarnMsgDO.builder().warnLevel(4)
|
||||||
|
.warnCode("PP")
|
||||||
|
.robotNo("")
|
||||||
|
.warnType(RobotWarnType.PATH.getType())
|
||||||
|
.warnMsg(message)
|
||||||
|
.warnSolve(message)
|
||||||
|
.build();
|
||||||
|
warnMsgMapper.insert(warnMsg);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -405,12 +405,8 @@
|
|||||||
<if test="groupName != null and groupName != ''">
|
<if test="groupName != null and groupName != ''">
|
||||||
group_name = #{groupName},
|
group_name = #{groupName},
|
||||||
</if>
|
</if>
|
||||||
<if test="skuInfo != null and skuInfo != ''">
|
|
||||||
sku_info = #{skuInfo},
|
sku_info = #{skuInfo},
|
||||||
</if>
|
|
||||||
<if test="skuBatch != null and skuBatch != ''">
|
|
||||||
sku_batch = #{skuBatch},
|
sku_batch = #{skuBatch},
|
||||||
</if>
|
|
||||||
<if test="skuNumber != null">
|
<if test="skuNumber != null">
|
||||||
sku_number = #{skuNumber},
|
sku_number = #{skuNumber},
|
||||||
</if>
|
</if>
|
||||||
|
@ -259,7 +259,8 @@
|
|||||||
t1.robot_no AS robotNo,
|
t1.robot_no AS robotNo,
|
||||||
t2.robot_wide AS robotWide,
|
t2.robot_wide AS robotWide,
|
||||||
t2.robot_center_headstock AS robotCenterHeadstock,
|
t2.robot_center_headstock AS robotCenterHeadstock,
|
||||||
t2.robot_center_tail AS robotCenterTail
|
t2.robot_center_tail AS robotCenterTail,
|
||||||
|
t1.mac_address as macAddress
|
||||||
FROM
|
FROM
|
||||||
robot_information t1
|
robot_information t1
|
||||||
LEFT JOIN robot_model t2 ON t1.robot_model_id = t2.id
|
LEFT JOIN robot_model t2 ON t1.robot_model_id = t2.id
|
||||||
|
Loading…
Reference in New Issue
Block a user