工作时长、初始化数据
This commit is contained in:
parent
fe186d3117
commit
f428509644
@ -150,7 +150,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
if (ObjectUtil.isNotEmpty(robotCompleteTaskDTO.getCommandStatus())
|
||||
&& RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getCommandStatus().getExecutionState())) {
|
||||
log.info("任务未开始 :{}", robotCompleteTaskDTO.getOrderId());
|
||||
}else if (RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getExecutionState())
|
||||
} else if (RobotExecutionStateConstant.UN_DO.equals(robotCompleteTaskDTO.getExecutionState())
|
||||
|| RobotExecutionStateConstant.STOP.equals(robotCompleteTaskDTO.getExecutionState())
|
||||
|| RobotExecutionStateConstant.CLOSE.equals(robotCompleteTaskDTO.getExecutionState())) {
|
||||
log.info("任务未开始/暂停/取消 :{}", robotCompleteTaskDTO.getOrderId());
|
||||
@ -247,6 +247,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
redisUtil.del(RobotTaskChcheConstant.ROBOT_TASK_SKU_INFO + robotCompleteTaskDTO.getMac());
|
||||
}
|
||||
//todo 后面考虑下充电,车机目前对充电的逻辑未定义
|
||||
RobotTaskDetailDO robotTaskDetail = null;
|
||||
if (PathTaskTypeEnum.MOVE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
|| PathTaskTypeEnum.MOVE_TO_WAIT_STOP.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
|| PathTaskTypeEnum.MOVE_TO_POINT.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
@ -254,7 +255,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
|| PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
|| PathTaskTypeEnum.CHARGE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
|| PathTaskTypeEnum.RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
taskDone(robotCompleteTaskDTO);
|
||||
robotTaskDetail = taskDone(robotCompleteTaskDTO);
|
||||
|
||||
} else if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||
@ -266,7 +267,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||
return;
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(robotCompleteTaskDTO.getCommandStatus().getCommandType())) {
|
||||
taskDone(robotCompleteTaskDTO);
|
||||
robotTaskDetail = taskDone(robotCompleteTaskDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@ -276,6 +277,29 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
}
|
||||
taskDetailActionLogMapper.updateActionStatus(robotCompleteTaskDTO.getOrderId(), ActionStatusEnum.DONE.getType(), LocalDateTime.now());
|
||||
|
||||
addTaskDetailActionDoneLog(robotCompleteTaskDTO, robotTaskDetail);
|
||||
}
|
||||
|
||||
private void addTaskDetailActionDoneLog(RobotCompleteTaskDTO robotCompleteTaskDTO, RobotTaskDetailDO robotTaskDetail) {
|
||||
RobotTaskDetailActionLogSaveReqVO logOne = new RobotTaskDetailActionLogSaveReqVO();
|
||||
String robotNo = robotInformationService.getRobotNoByMac(robotCompleteTaskDTO.getMac());
|
||||
logOne.setActionMsg("车辆 " + robotNo + " 完成任务");
|
||||
logOne.setRobotNo(robotNo);
|
||||
logOne.setOriginalRobotNo(robotNo);
|
||||
logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId());
|
||||
if (ObjectUtil.isNotEmpty(robotTaskDetail)) {
|
||||
logOne.setTaskStage(robotTaskDetail.getTaskStage());
|
||||
logOne.setCommandType(PathTaskTypeEnum.getTaskType(robotTaskDetail.getTaskType()));
|
||||
}
|
||||
// logOne.setTaskNo(robotTask.getTaskNo());
|
||||
logOne.setActionStatus(ActionStatusEnum.DONE.getType());
|
||||
logOne.setStartTime(LocalDateTime.now());
|
||||
logOne.setEndTime(LocalDateTime.now());
|
||||
Long mapId = robotInformationService.getRobotMapIdByRobotNo(robotNo);
|
||||
if (ObjectUtil.isNotEmpty(mapId)) {
|
||||
logOne.setPositionMapId(mapId);
|
||||
}
|
||||
taskDetailActionLogService.createTaskDetailActionLog(logOne);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -416,16 +440,18 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||
if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())
|
||||
|| PathTaskTypeEnum.TAKE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
RobotTaskDetailDO detailDO = new RobotTaskDetailDO();
|
||||
if (RobotTaskStageEnum.GO_TAKE.getType().equals(robotTaskDetailDO.getTaskStage())
|
||||
|| RobotTaskStageEnum.UN_START.getType().equals(robotTaskDetailDO.getTaskStage())) {
|
||||
robotTaskDetailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType());
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.UN_START.getType());
|
||||
detailDO.setTaskStatus(RobotTaskDetailStatusEnum.NEW.getType());
|
||||
detailDO.setTaskStage(RobotTaskStageEnum.UN_START.getType());
|
||||
|
||||
if (!znConfigConstant.getIsSimulation()) {
|
||||
// robotTaskDetailDO.setRobotNo("");
|
||||
}
|
||||
robotTaskDetailDO.setOccurError(ZeroOneEnum.ZERO.getType());
|
||||
robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||
detailDO.setOccurError(ZeroOneEnum.ZERO.getType());
|
||||
// robotTaskDetailMapper.updateById(robotTaskDetailDO);
|
||||
robotTaskDetailMapper.updateRobotDetailById(detailDO);
|
||||
String taskNo = taskDetailService.getTaskNoByDetailId(robotCompleteTaskDTO.getOrderId());
|
||||
msg = robotNo + "_" + "车辆发生异常,重新分配其他车辆执行此任务" + taskNo + " - " + robotCompleteTaskDTO.getOrderId();
|
||||
}
|
||||
@ -540,7 +566,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
*
|
||||
* @param robotCompleteTaskDTO
|
||||
*/
|
||||
private void taskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
||||
private RobotTaskDetailDO taskDone(RobotCompleteTaskDTO robotCompleteTaskDTO) {
|
||||
|
||||
RobotTaskDetailDO robotTaskDetailDO = setTaskDone(robotCompleteTaskDTO);
|
||||
|
||||
@ -561,6 +587,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
String plantingKey = PathPlanningChcheConstant.PATH_PLANNING_TASK + robotCompleteTaskDTO.getOrderId();
|
||||
redisUtil.del(plantingKey);
|
||||
}
|
||||
return robotTaskDetailDO;
|
||||
}
|
||||
|
||||
|
||||
@ -574,7 +601,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
|
||||
RobotTaskDetailDO robotTaskDetailDO = robotTaskDetailMapper.selectById(robotCompleteTaskDTO.getOrderId());
|
||||
Long taskStage = robotTaskDetailDO.getTaskStage();
|
||||
log.info("任务 :{} , 当前阶段 :{}",robotCompleteTaskDTO.getOrderId(),taskStage);
|
||||
log.info("任务 :{} , 当前阶段 :{}", robotCompleteTaskDTO.getOrderId(), taskStage);
|
||||
|
||||
RobotTaskDO robotTask = robotTaskMapper.selectById(robotTaskDetailDO.getRobotTaskId());
|
||||
|
||||
@ -583,7 +610,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
|
||||
RobotTaskDetailActionLogSaveReqVO logOne = new RobotTaskDetailActionLogSaveReqVO();
|
||||
if (PathTaskTypeEnum.TAKE_RELEASE.getType().equals(robotCompleteTaskDTO.getOrderType())) {
|
||||
if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType) && (RobotTaskStageEnum.UN_START.getType().equals(taskStage)
|
||||
if (CommandTypeEnum.WORK_PICK_UP_GOODS_MOVE_TO_CHECK.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getFromLocationNo() + "取货");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_TAKE.getType());
|
||||
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType) && (RobotTaskStageEnum.UN_START.getType().equals(taskStage)
|
||||
|| RobotTaskStageEnum.GO_TAKE.getType().equals(taskStage)
|
||||
|| RobotTaskStageEnum.TAKEING.getType().equals(taskStage))) {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getFromLocationNo() + "取货");
|
||||
@ -596,7 +626,8 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在放货" + robotTaskDetailDO.getToLocationNo());
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)) {
|
||||
} else if (CommandTypeEnum.MOVE_POSES.getType().equals(commandType)
|
||||
|| CommandTypeEnum.WORK_DROP_OFF_GOODS_MOVE_TO_CHECK.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
||||
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||
@ -642,7 +673,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi {
|
||||
logOne.setActionMsg("车辆正在前往" + robotTaskDetailDO.getToLocationNo() + "放货");
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.GO_RELEASE.getType());
|
||||
} else if (CommandTypeEnum.WORK_DROP_OFF_GOODS.getType().equals(commandType)) {
|
||||
logOne.setActionMsg("车辆正在放货"+ robotTaskDetailDO.getToLocationNo());
|
||||
logOne.setActionMsg("车辆正在放货" + robotTaskDetailDO.getToLocationNo());
|
||||
if (!RobotTaskStageEnum.DONE.getType().equals(taskStage)) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING.getType());
|
||||
}
|
||||
|
@ -61,4 +61,6 @@ public interface RobotTaskDetailActionLogMapper extends BaseMapperX<RobotTaskDet
|
||||
* @return
|
||||
*/
|
||||
List<RobotTaskDetailActionLogDO> getLastTwoTask(@Param("robotNo") String robotNo);
|
||||
|
||||
void alreadyCounted(@Param("ids") List<Long> ids);
|
||||
}
|
@ -92,4 +92,6 @@ public interface RobotInformationMapper extends BaseMapperX<RobotInformationDO>
|
||||
RobotInformationDO selectByRobotNoAndIdNotIn(@Param("robotNo") String robotNo, @Param("id") Long id);
|
||||
|
||||
RobotInformationDO selectByMacAndIdNotIn(@Param("macAddress") String macAddress,@Param("id") Long id);
|
||||
|
||||
void initRobotInformation();
|
||||
}
|
||||
|
@ -167,4 +167,13 @@ public interface RobotTaskDetailMapper extends BaseMapperX<RobotTaskDetailDO> {
|
||||
* @return
|
||||
*/
|
||||
RobotTaskManualInterventionDTO getRobotTaskAutomaticArtificial(@Param("type") String type);
|
||||
|
||||
/**
|
||||
* 清除所有数据
|
||||
*/
|
||||
void truncate();
|
||||
|
||||
List<RobotTaskDetailDO> selectAutoCreateCycleTaskForever();
|
||||
|
||||
void setTaskUnDo(@Param("ids") List<Long> ids);
|
||||
}
|
@ -86,4 +86,11 @@ public interface RobotTaskMapper extends BaseMapperX<RobotTaskDO> {
|
||||
* @return
|
||||
*/
|
||||
List<RobotTaskDO> selectDoingTaskByRobotNo(@Param("robotNo") String robotNo);
|
||||
|
||||
/**
|
||||
* 清除所有数据
|
||||
*/
|
||||
void truncate();
|
||||
|
||||
void setTaskUnDo(@Param("ids") Set<Long> ids);
|
||||
}
|
@ -28,6 +28,6 @@ public enum DurationTypeEnum {
|
||||
|| PathTaskTypeEnum.AUTO_CHARGE.getType().equals(commonType)) {
|
||||
return CHARGE_TIME.type;
|
||||
}
|
||||
return CHARGE_TIME.type;
|
||||
return TASK_TIME.type;
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.job.AutoChargeService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.job.CycleService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.job.DistributeTasksService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.job.InitTaskService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.job.RobotTaskAutoMoveService;
|
||||
import cn.iocoder.yudao.module.system.service.robot.pathplanning.RobotPathPlanningService;
|
||||
import cn.iocoder.yudao.module.system.service.statistics.RobotWorkingHoursStatisticsService;
|
||||
@ -51,6 +52,9 @@ public class RobotJob {
|
||||
@Resource
|
||||
private RobotInformationService informationService;
|
||||
|
||||
@Resource
|
||||
private InitTaskService initTaskService;
|
||||
|
||||
@Resource
|
||||
private RobotWorkingHoursStatisticsService robotWorkingHoursStatisticsService;
|
||||
|
||||
@ -64,13 +68,13 @@ public class RobotJob {
|
||||
locks.add(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||
locks.add(RobotCacheLockEnum.ROBOT_TASK_ADD_LOCK.getKey());
|
||||
RLock lock = redissonUtils.getLocks(locks);
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
robotTaskAutoMoveService.distributeAutoMoveJob();
|
||||
} finally {
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
log.info("下发自动移库任务未获取到锁");
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
@ -82,16 +86,16 @@ public class RobotJob {
|
||||
public void AutoChargeJob() {
|
||||
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
log.info("----111111下发自动充电任务----");
|
||||
autoChargeService.autoChargeJob();
|
||||
} catch (Exception e) {
|
||||
log.info("自动充电异常 :{}",e);
|
||||
log.info("自动充电异常 :{}", e);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
log.info("下发自动充电任务未获取到锁");
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
@ -105,23 +109,22 @@ public class RobotJob {
|
||||
public void DistributeTasksToPathPlanningJob() {
|
||||
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_DISTRIBUTE_LOCK.getKey());
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
log.info("----111111下发任务给路径规划----");
|
||||
robotPathPlanningService.sendTaskToPP();
|
||||
} catch (Exception e) {
|
||||
log.info("----分配任务异常---- :{}",e);
|
||||
log.info("----分配任务异常---- :{}", e);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
log.info("下发任务给路径规划未获取到锁");
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建循环任务
|
||||
*/
|
||||
@ -130,18 +133,18 @@ public class RobotJob {
|
||||
public void cycleTaskJob() {
|
||||
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_TASK_ADD_LOCK.getKey());
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
|
||||
try {
|
||||
log.info("----111111创建循环任务----");
|
||||
cycleService.cycleTaskJob();
|
||||
} catch (Exception e) {
|
||||
log.error("创建循环任务异常 :{}",e);
|
||||
log.error("创建循环任务异常 :{}", e);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
|
||||
}else {
|
||||
} else {
|
||||
log.info("下发任务给路径规划未获取到锁");
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
@ -156,15 +159,15 @@ public class RobotJob {
|
||||
public void rcsHeartBeat() {
|
||||
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_RCS_HEART_BEAT_LOCK.getKey());
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
log.info("----维护车机心跳----");
|
||||
TenantContextHolder.setTenantId(1L);
|
||||
informationService.rcsHeartBeat();
|
||||
} finally {
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
}
|
||||
@ -176,18 +179,29 @@ public class RobotJob {
|
||||
@TenantJob
|
||||
public void statisticsDuration() {
|
||||
RLock lock = redissonUtils.getLock(RobotCacheLockEnum.ROBOT_STATISTICS_DURATION_LOCK.getKey());
|
||||
if (lock.tryLock()){
|
||||
if (lock.tryLock()) {
|
||||
try {
|
||||
log.info("----统计时长开始----");
|
||||
TenantContextHolder.setTenantId(1L);
|
||||
robotWorkingHoursStatisticsService.statisticsRobotDuration();
|
||||
} catch (Exception e) {
|
||||
log.info("统计工作时长异常 :{}",e);
|
||||
log.info("统计工作时长异常 :{}", e);
|
||||
} finally {
|
||||
lock.unlock();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
throw exception(REDISSON_NOT_OBTAIN_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 恢复数据 (只能是测试的时候用,上线禁止使用)
|
||||
*/
|
||||
@XxlJob("initTaskJob")
|
||||
@TenantJob
|
||||
public void initTaskJob() {
|
||||
TenantContextHolder.setTenantId(1L);
|
||||
initTaskService.initTask();
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ public class ThreeDimensionalScheduled {
|
||||
private static final ExecutorService FIXED_THREAD_POOL = Executors.newFixedThreadPool(3);
|
||||
|
||||
// 这个方法将每200毫秒执行一次
|
||||
@Scheduled(fixedDelay = 300, timeUnit = TimeUnit.MILLISECONDS)
|
||||
// @Scheduled(fixedDelay = 300, timeUnit = TimeUnit.MILLISECONDS)
|
||||
public void executeTask() {
|
||||
FIXED_THREAD_POOL.execute(this::sendData);
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
|
||||
for (WareHouseLocationDO wareHouseLocationDO : wareHouseLocationDOS) {
|
||||
wareHouseLocationDO.setAreaId(null);
|
||||
wareHouseLocationDO.setAreaName(null);
|
||||
wareHouseLocationDO.setSkuInfo(null);
|
||||
// wareHouseLocationDO.setSkuInfo(null);
|
||||
}
|
||||
item.setDataJson(JSONUtil.toJsonStr(wareHouseLocationDOS));
|
||||
}
|
||||
|
@ -90,4 +90,8 @@ public interface RobotTaskDetailActionLogService {
|
||||
* @return
|
||||
*/
|
||||
RobotTaskDetailActionLogDO getOriginalLastTaskByRobotNo(String robotNo);
|
||||
|
||||
void alreadyCounted(List<Long> logIds);
|
||||
|
||||
RobotTaskDetailActionLogDO getLastActionLogByDetailId(Long taskDetailId);
|
||||
}
|
@ -141,4 +141,18 @@ public class RobotTaskDetailActionLogServiceImpl implements RobotTaskDetailActio
|
||||
.last("limit 1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void alreadyCounted(List<Long> logIds) {
|
||||
taskDetailActionLogMapper.alreadyCounted(logIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RobotTaskDetailActionLogDO getLastActionLogByDetailId(Long taskDetailId) {
|
||||
return taskDetailActionLogMapper.selectOne(new LambdaQueryWrapperX<RobotTaskDetailActionLogDO>()
|
||||
.eq(RobotTaskDetailActionLogDO::getTaskDetailId, taskDetailId)
|
||||
.eq(RobotTaskDetailActionLogDO::getCommandId, CommandIdEnum.TASK.getType())
|
||||
.orderByDesc(RobotTaskDetailActionLogDO::getCreateTime)
|
||||
.last("limit 1"));
|
||||
}
|
||||
|
||||
}
|
@ -262,4 +262,7 @@ public interface RobotInformationService extends IService<RobotInformationDO> {
|
||||
void stopRobot(String robotNo);
|
||||
|
||||
void continueRobot(String robotNo);
|
||||
|
||||
void initRobotInformation();
|
||||
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
.last("limit 1"));
|
||||
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId() + "");
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress());
|
||||
robotTask.setExecutionType(ExecutionTypeEnum.PAUSE.getType());
|
||||
mqttUtils.pub(robotTask.getTopic(), JSON.toJSONString(robotTask));
|
||||
@ -377,13 +377,18 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
.last("limit 1"));
|
||||
|
||||
RobotAcceptTaskDTO robotTask = new RobotAcceptTaskDTO();
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
robotTask.setOrderId(robotInformationDO.getTaskDetailId() + "");
|
||||
robotTask.setTopic(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress());
|
||||
robotTask.setExecutionType(ExecutionTypeEnum.CONTINUE.getType());
|
||||
mqttUtils.pub(robotTask.getTopic(), JSON.toJSONString(robotTask));
|
||||
mapStopService.rcsDeleteStopRobotAddLog(robotNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initRobotInformation() {
|
||||
informationMapper.initRobotInformation();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 校验IP地址是否合法
|
||||
@ -438,8 +443,8 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
if (RobotStatusEnum.STOP_FREE.getType().equals(updateReqVO.getRobotStatus())
|
||||
|| RobotStatusEnum.STOP_DOING.getType().equals(updateReqVO.getRobotStatus())) {
|
||||
updateReqVO.setRobotStatus(robotInformationDO.getRobotStatus());
|
||||
}else if (!updateReqVO.getRobotStatus().equals(robotInformationDO.getRobotStatus())) {
|
||||
str = str + " 修改车辆状态: " +RobotStatusEnum.getMsg(updateReqVO.getRobotStatus());
|
||||
} else if (!updateReqVO.getRobotStatus().equals(robotInformationDO.getRobotStatus())) {
|
||||
str = str + " 修改车辆状态: " + RobotStatusEnum.getMsg(updateReqVO.getRobotStatus());
|
||||
}
|
||||
|
||||
if (!updateReqVO.getRobotNo().equals(robotInformationDO.getRobotNo())) {
|
||||
@ -744,7 +749,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
}
|
||||
|
||||
for (RobotInformationPageRespVO v : targetList) {
|
||||
setMsgAndRobotStatus(v,stopRobotNos);
|
||||
setMsgAndRobotStatus(v, stopRobotNos);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(pageReqVO.getRobotStatisticsType())) {
|
||||
@ -807,7 +812,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
*
|
||||
* @param v
|
||||
*/
|
||||
private void setMsgAndRobotStatus(RobotInformationPageRespVO v,List<String> stopRobotNos) {
|
||||
private void setMsgAndRobotStatus(RobotInformationPageRespVO v, List<String> stopRobotNos) {
|
||||
|
||||
if (ObjectUtil.isNotEmpty(stopRobotNos) && stopRobotNos.contains(v.getRobotNo())) {
|
||||
v.setIsStop(ZeroOneEnum.ONE.getType());
|
||||
@ -1238,7 +1243,14 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doTaskContinue(String robotNo, Boolean isRobot) {
|
||||
|
||||
RobotTaskDetailActionLogDO actionLog = taskDetailActionLogService.getOriginalLastTaskByRobotNo(robotNo);
|
||||
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||
.last("limit 1"));
|
||||
if (ObjectUtil.isEmpty(robotInformationDO.getTaskDetailId())) {
|
||||
throw exception(ROBOT_LAST_TASK_NO_EXISTS);
|
||||
}
|
||||
|
||||
RobotTaskDetailActionLogDO actionLog = taskDetailActionLogService.getLastActionLogByDetailId(robotInformationDO.getTaskDetailId());
|
||||
if (ObjectUtil.isEmpty(actionLog)) {
|
||||
throw exception(ROBOT_LAST_TASK_NO_EXISTS);
|
||||
}
|
||||
@ -1248,10 +1260,6 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
TASK_ASSIGN_OTHER_ROBOT.getMsg() + actionLog.getRobotNo());
|
||||
}
|
||||
|
||||
RobotInformationDO robotInformationDO = informationMapper.selectOne(new LambdaQueryWrapper<RobotInformationDO>()
|
||||
.eq(RobotInformationDO::getRobotNo, robotNo)
|
||||
.last("limit 1"));
|
||||
|
||||
if (RobotTaskModelEnum.REJECTION.getType().equals(robotInformationDO.getRobotTaskModel())) {
|
||||
throw exception(ROBOT_REJECTION);
|
||||
}
|
||||
@ -1259,11 +1267,9 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
String mac = getMacByRobotNo(robotNo);
|
||||
robotCloseTaskDetail(actionLog.getTaskDetailId() + "", mac, actionLog.getCommandType());
|
||||
|
||||
if (!znConfigConstant.getIsSimulation()) {
|
||||
checkTaskDone(actionLog.getTaskDetailId() + "");
|
||||
}
|
||||
checkTaskDone(actionLog.getTaskDetailId() + "");
|
||||
|
||||
CleanAgvDTO build = CleanAgvDTO.builder().robotNo(robotNo).build();
|
||||
// CleanAgvDTO build = CleanAgvDTO.builder().robotNo(robotNo).build();
|
||||
// commonApi.commonMethod(build, PathPlanningTopicConstant.CLEAN_AGV);
|
||||
// mqttUtils.pub(PathPlanningTopicConstant.CLEAN_AGV, JSON.toJSONString(build));
|
||||
|
||||
@ -1343,15 +1349,14 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
String plantingKey = PathPlanningChcheConstant.PATH_PLANNING_TASK + pathPlanning.getOrderId();
|
||||
redisUtil.set(plantingKey, JSON.toJSONString(pathPlanning), znConfigConstant.getTask().getTaskCacheTime());
|
||||
|
||||
log.info("任务下发给PP :{}", JSON.toJSONString(pathPlanningList));
|
||||
// commonApi.commonMethod(pathPlanningList, PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST);
|
||||
log.info("111111恢复任务下发给PP :{}", JSON.toJSONString(pathPlanningList));
|
||||
mqttUtils.pub(PathPlanningTopicConstant.TASK_ASSIGNMENT_REQUEST, JSON.toJSONString(pathPlanningList));
|
||||
}
|
||||
|
||||
private void resendToPPData(TaskToPathPlanningDTO pathPlanning, RobotTaskDetailActionLogDO actionLog, RobotInformationDO robotInformationDO, Boolean isRemote) {
|
||||
if (PathTaskTypeEnum.MOVE_TO_WAIT.getType().equals(actionLog.getCommandType())
|
||||
|| PathTaskTypeEnum.MOVE_TO_WAIT_STOP.getType().equals(actionLog.getCommandType())) {
|
||||
moveToWaitTask(pathPlanning, actionLog.getRobotNo());
|
||||
moveToWaitTask(pathPlanning, robotInformationDO.getRobotNo());
|
||||
} else if (PathTaskTypeEnum.CHARGE.getType().equals(actionLog.getCommandType())
|
||||
|| PathTaskTypeEnum.AUTO_CHARGE.getType().equals(actionLog.getCommandType())) {
|
||||
chargeTask(pathPlanning, robotInformationDO);
|
||||
@ -1660,7 +1665,7 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
|
||||
List<RobotInformationDO> robotInformationDOS = informationMapper.selectList(new LambdaQueryWrapperX<RobotInformationDO>()
|
||||
.in(RobotInformationDO::getRobotNo, robotNos));
|
||||
for (RobotInformationDO robotInformationDO : robotInformationDOS) {
|
||||
robotSimulationPose.setOrderId(robotInformationDO.getTaskDetailId()+"");
|
||||
robotSimulationPose.setOrderId(robotInformationDO.getTaskDetailId() + "");
|
||||
mqttUtils.pub(RobotTopicConstant.ROBOT_TASK_MOVE_TOPIC + robotInformationDO.getMacAddress(), JSON.toJSONString(robotSimulationPose));
|
||||
UserOperationLogSaveReqVO operationLog = UserOperationLogSaveReqVO.builder()
|
||||
.operateAction(str + robotInformationDO.getRobotNo())
|
||||
|
@ -230,7 +230,7 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
|
||||
.id(robotTaskDetailDO.getId().toString())
|
||||
.build();
|
||||
// commonApi.commonMethod(closePathPlanting, PathPlanningTopicConstant.KILL_TASK);
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK,JSON.toJSONString(closePathPlanting));
|
||||
mqttUtils.pub(PathPlanningTopicConstant.KILL_TASK, JSON.toJSONString(closePathPlanting));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -258,18 +258,28 @@ public class RobotTaskDetailServiceImpl implements RobotTaskDetailService {
|
||||
|| RobotTaskStageEnum.GO_TAKE.getType().equals(detailDO.getTaskStage())
|
||||
|| RobotTaskStageEnum.TAKEING.getType().equals(detailDO.getTaskStage())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING_EXCEPTION.getType());
|
||||
}else {
|
||||
} else {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING_EXCEPTION.getType());
|
||||
}
|
||||
} else if(RobotTaskTypeEnum.TAKE.getType().equals(detailDO.getTaskType())) {
|
||||
} else if (RobotTaskTypeEnum.TAKE.getType().equals(detailDO.getTaskType())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.TAKEING_EXCEPTION.getType());
|
||||
}else if(RobotTaskTypeEnum.RELEASE.getType().equals(detailDO.getTaskType())) {
|
||||
} else if (RobotTaskTypeEnum.RELEASE.getType().equals(detailDO.getTaskType())) {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.RELEASEING_EXCEPTION.getType());
|
||||
}else {
|
||||
} else {
|
||||
robotTaskDetailDO.setTaskStage(RobotTaskStageEnum.EXCEPTION.getType());
|
||||
}
|
||||
robotTaskDetailDO.setOccurError(ZeroOneEnum.ONE.getType());
|
||||
taskDetailMapper.updateById(robotTaskDetailDO);
|
||||
taskDetailMapper.updateRobotDetailById(robotTaskDetailDO);
|
||||
|
||||
List<RobotTaskDetailDO> taskDetailDOS = taskDetailMapper.selectList(new LambdaQueryWrapperX<RobotTaskDetailDO>()
|
||||
.eq(RobotTaskDetailDO::getRobotTaskId, detailDO.getRobotTaskId()));
|
||||
if (taskDetailDOS.size() > 1) {
|
||||
return;
|
||||
}
|
||||
RobotTaskDO robotTaskDO = new RobotTaskDO();
|
||||
robotTaskDO.setId(detailDO.getRobotTaskId());
|
||||
robotTaskDO.setTaskStatus(RobotTaskDetailStatusEnum.ABNORMAL.getType());
|
||||
robotTaskMapper.updateRobot(robotTaskDO);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -533,9 +533,8 @@ public class RobotTaskServiceImpl extends ServiceImpl<RobotTaskMapper, RobotTask
|
||||
if (ObjectUtil.isEmpty(cargoDetected) || RobotStatusCodeConstant.CARGO_DETECTED.equals(cargoDetected)) {
|
||||
robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||
}*/
|
||||
//因为机器人如果正在抬叉取货,这时把任务取消,如果货叉刚好伸到托盘底下,还是需要人为控制
|
||||
// robotInformationDO.setRobotTaskModel(RobotTaskModelEnum.REJECTION.getType());
|
||||
robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
|
||||
// robotInformationDO.setRobotStatus(RobotStatusEnum.STAND_BY.getType());
|
||||
}
|
||||
|
||||
informationMapper.updateById(robotInformationDOS);
|
||||
|
@ -30,6 +30,7 @@ import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -94,7 +95,7 @@ public class CycleServiceImpl implements CycleService {
|
||||
List<RobotTaskDO> taskDOList = new ArrayList<>();
|
||||
List<RobotTaskDetailDO> taskDetailList = new LinkedList<>();
|
||||
for (RobotTaskDO v : taskList) {
|
||||
String incrementByKey = redisUtil.getIncrementByKey(RobotCacheLockEnum.TASK_NO.getKey());
|
||||
String incrementByKey = redisUtil.getIncrementByKey(RobotCacheLockEnum.MOVE_TASK_NO.getKey());
|
||||
RobotTaskDO taskData = getTaskData(incrementByKey, v);
|
||||
List<RobotTaskDetailDO> taskDetailDOS = getTaskDetailData(taskData,taskIdMap,v.getId());
|
||||
taskDOList.add(taskData);
|
||||
@ -136,6 +137,22 @@ public class CycleServiceImpl implements CycleService {
|
||||
robotTaskService.addCycle(k,v);
|
||||
});
|
||||
taskCycleMapper.deletByRobotTaskIds(taskIds);
|
||||
setTaskUnDo();
|
||||
}
|
||||
|
||||
public void setTaskUnDo() {
|
||||
List<RobotTaskDetailDO> detailDOS = taskDetailMapper.selectAutoCreateCycleTaskForever();
|
||||
if (ObjectUtil.isEmpty(detailDOS)) {
|
||||
return;
|
||||
}
|
||||
List<Long> detailIds = new ArrayList<>();
|
||||
Set<Long> taskIds = new HashSet<>();
|
||||
for (RobotTaskDetailDO detail : detailDOS) {
|
||||
detailIds.add(detail.getId());
|
||||
taskIds.add(detail.getRobotTaskId());
|
||||
}
|
||||
taskDetailMapper.setTaskUnDo(detailIds);
|
||||
taskMapper.setTaskUnDo(taskIds);
|
||||
}
|
||||
|
||||
private List<RobotTaskDetailDO> getTaskDetailData(RobotTaskDO taskData, Map<Long,
|
||||
@ -194,7 +211,7 @@ public class CycleServiceImpl implements CycleService {
|
||||
* @return
|
||||
*/
|
||||
public RobotTaskDO getTaskData(String incrementByKey, RobotTaskDO v ) {
|
||||
String taskNoStr = znConfigConstant.getTaskNo() + DateUtils.getYearMonthDay() + incrementByKey;
|
||||
String taskNoStr = znConfigConstant.getMoveNo() + DateUtils.getYearMonthDay() + incrementByKey;
|
||||
RobotTaskDO task = new RobotTaskDO();
|
||||
BeanUtils.copyProperties(v, task);
|
||||
task.setRemainingCycleNumber(v.getRemainingCycleNumber() - 1);
|
||||
|
@ -0,0 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.service.robot.job;
|
||||
|
||||
public interface InitTaskService {
|
||||
void initTask();
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package cn.iocoder.yudao.module.system.service.robot.job;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskDetailMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.robot.RobotTaskMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.robot.RobotTaskStatusEnum;
|
||||
import cn.iocoder.yudao.module.system.service.robot.RobotInformationService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class InitTaskServiceImpl implements InitTaskService{
|
||||
|
||||
@Resource
|
||||
private RobotTaskDetailMapper taskDetailMapper;
|
||||
|
||||
@Resource
|
||||
private RobotTaskMapper robotTaskMapper;
|
||||
|
||||
@Resource
|
||||
private RobotInformationService informationService;
|
||||
|
||||
@Override
|
||||
public void initTask() {
|
||||
log.info("将任务清除,上线时候,禁止使用");
|
||||
List<RobotTaskDetailDO> taskDetailDOS = taskDetailMapper.selectList(new LambdaQueryWrapperX<RobotTaskDetailDO>()
|
||||
.eq(RobotTaskDetailDO::getTaskStatus, RobotTaskStatusEnum.DOING.getType()));
|
||||
if (ObjectUtil.isNotEmpty(taskDetailDOS)) {
|
||||
for (RobotTaskDetailDO taskDetail : taskDetailDOS) {
|
||||
String mac = informationService.getMacByRobotNo(taskDetail.getRobotNo());
|
||||
informationService.robotCloseTaskDetail(String.valueOf(taskDetail.getId()), mac, "");
|
||||
}
|
||||
}
|
||||
|
||||
taskDetailMapper.truncate();
|
||||
robotTaskMapper.truncate();
|
||||
informationService.initRobotInformation();
|
||||
}
|
||||
}
|
@ -83,6 +83,9 @@ public class RobotWorkingHoursStatisticsServiceImpl extends ServiceImpl<RobotWor
|
||||
&& RobotStatusEnum.STAND_BY.getType().equals(robot.getRobotStatus())) {
|
||||
RobotWorkingHoursStatisticsDO statisticsDO = new RobotWorkingHoursStatisticsDO();
|
||||
statisticsDO.setDuration(getMinutes(freeTimeObject));
|
||||
if (statisticsDO.getDuration() == 0) {
|
||||
continue;
|
||||
}
|
||||
statisticsDO.setRobotNo(robot.getRobotNo());
|
||||
Long mapId = informationService.getRobotMapIdByRobotNo(robot.getRobotNo());
|
||||
if (ObjectUtil.isNotEmpty(mapId)) {
|
||||
@ -112,11 +115,14 @@ public class RobotWorkingHoursStatisticsServiceImpl extends ServiceImpl<RobotWor
|
||||
if (ObjectUtil.isNotEmpty(statisticsDOS)) {
|
||||
robotWorkingHoursStatisticsMapper.insertBatch(statisticsDOS);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建这台车的空闲时间
|
||||
* 别改事务传播
|
||||
*
|
||||
* @param robotNo
|
||||
*/
|
||||
@Override
|
||||
@ -164,15 +170,15 @@ public class RobotWorkingHoursStatisticsServiceImpl extends ServiceImpl<RobotWor
|
||||
|
||||
List<RobotWorkHourStatisticsDTO> list = new ArrayList<>();
|
||||
|
||||
robotMap.forEach((k,v) ->{
|
||||
robotMap.forEach((k, v) -> {
|
||||
RobotWorkHourStatisticsDTO statisticsDTO = new RobotWorkHourStatisticsDTO();
|
||||
statisticsDTO.setRobotNo(k);
|
||||
Long freeTime = v.get(DurationTypeEnum.FREE_TIME.getType());
|
||||
String freeTimeStr = ObjectUtil.isNotEmpty(freeTime) ? String.format("%.1f",(freeTime.doubleValue() / 60)) : "0";
|
||||
String freeTimeStr = ObjectUtil.isNotEmpty(freeTime) ? String.format("%.1f", (freeTime.doubleValue() / 60)) : "0";
|
||||
Long taskTime = v.get(DurationTypeEnum.TASK_TIME.getType());
|
||||
String taskTimeStr = ObjectUtil.isNotEmpty(taskTime) ? String.format("%.1f",(taskTime.doubleValue() / 60)) : "0";
|
||||
String taskTimeStr = ObjectUtil.isNotEmpty(taskTime) ? String.format("%.1f", (taskTime.doubleValue() / 60)) : "0";
|
||||
Long chargeTime = v.get(DurationTypeEnum.CHARGE_TIME.getType());
|
||||
String chargeTimeStr = ObjectUtil.isNotEmpty(chargeTime) ? String.format("%.1f",(chargeTime.doubleValue() / 60)) : "0";
|
||||
String chargeTimeStr = ObjectUtil.isNotEmpty(chargeTime) ? String.format("%.1f", (chargeTime.doubleValue() / 60)) : "0";
|
||||
|
||||
statisticsDTO.setFreeTimeNum(freeTimeStr);
|
||||
statisticsDTO.setTaskTimeNum(taskTimeStr);
|
||||
@ -201,6 +207,9 @@ public class RobotWorkingHoursStatisticsServiceImpl extends ServiceImpl<RobotWor
|
||||
private List<RobotWorkingHoursStatisticsDO> getWorkingHoursStatisticsByActionLog(List<RobotTaskDetailActionLogDO> actionLogList) {
|
||||
List<RobotWorkingHoursStatisticsDO> statisticsDOList = new ArrayList<>();
|
||||
|
||||
List<Long> logIds = new ArrayList<>();
|
||||
|
||||
Map<String, RobotWorkingHoursStatisticsDO> map = new HashMap<>();
|
||||
for (RobotTaskDetailActionLogDO v : actionLogList) {
|
||||
RobotWorkingHoursStatisticsDO statisticsDO = new RobotWorkingHoursStatisticsDO();
|
||||
if (ObjectUtil.isNotEmpty(v.getDuration())) {
|
||||
@ -215,9 +224,21 @@ public class RobotWorkingHoursStatisticsServiceImpl extends ServiceImpl<RobotWor
|
||||
statisticsDO.setPositionMapId(v.getPositionMapId());
|
||||
Integer durationTypeByTaskType = DurationTypeEnum.getDurationTypeByTaskType(v.getCommandType());
|
||||
statisticsDO.setDurationType(durationTypeByTaskType);
|
||||
statisticsDOList.add(statisticsDO);
|
||||
logIds.add(v.getId());
|
||||
String key = statisticsDO.getRobotNo() + "-" + statisticsDO.getPositionMapId() + "-" + statisticsDO.getDurationType();
|
||||
RobotWorkingHoursStatisticsDO statistics = map.get(key);
|
||||
if (ObjectUtil.isNotEmpty(statistics)) {
|
||||
statistics.setDuration(statistics.getDuration()+statisticsDO.getDuration());
|
||||
} else {
|
||||
statisticsDOList.add(statisticsDO);
|
||||
}
|
||||
}
|
||||
|
||||
if (ObjectUtil.isEmpty(logIds)) {
|
||||
return statisticsDOList;
|
||||
}
|
||||
|
||||
taskDetailActionLogService.alreadyCounted(logIds);
|
||||
return statisticsDOList;
|
||||
}
|
||||
|
||||
|
@ -537,8 +537,8 @@
|
||||
ware_house_location
|
||||
set
|
||||
area_name = null,
|
||||
area_id = null,
|
||||
sku_info = null
|
||||
area_id = null
|
||||
-- sku_info = null
|
||||
where
|
||||
area_id = #{areaId}
|
||||
</update>
|
||||
|
@ -147,6 +147,15 @@
|
||||
robot_no = #{robotNo}
|
||||
</update>
|
||||
|
||||
<update id="initRobotInformation">
|
||||
update
|
||||
robot_information
|
||||
set
|
||||
robot_status = '3',
|
||||
robot_task_model = '1'
|
||||
where deleted = '0'
|
||||
</update>
|
||||
|
||||
<!--通过主键删除-->
|
||||
<delete id="deleteById">
|
||||
delete
|
||||
|
@ -19,6 +19,19 @@
|
||||
task_detail_id = #{taskDetailId}
|
||||
and command_id = '-1'
|
||||
</update>
|
||||
|
||||
<update id="alreadyCounted">
|
||||
update
|
||||
robot_task_detail_action_log
|
||||
set already_counted = '1'
|
||||
where
|
||||
id in
|
||||
<foreach collection="ids" item="id" index="index" open="(" close=")"
|
||||
separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="getMistakeTaskByCommandType"
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLogDO">
|
||||
select
|
||||
@ -45,7 +58,7 @@
|
||||
from
|
||||
robot_task_detail_action_log
|
||||
where
|
||||
command_id != '-1'
|
||||
command_id is null
|
||||
and deleted = '0'
|
||||
and already_counted = '0'
|
||||
and create_time >= DATE_SUB(NOW(), INTERVAL 48 HOUR)
|
||||
@ -61,5 +74,6 @@
|
||||
and deleted = '0'
|
||||
and robot_no = #{robotNo}
|
||||
order by create_time desc
|
||||
limit 2
|
||||
</select>
|
||||
</mapper>
|
@ -227,7 +227,8 @@
|
||||
robot_task_detail t1, robot_task t2
|
||||
where
|
||||
t2.id = t1.robot_task_id
|
||||
and t2.remaining_cycle_number > 1
|
||||
and t2.remaining_cycle_number > 0
|
||||
and t2.remaining_cycle_number != 1000000
|
||||
and t2.task_status = '2'
|
||||
and t1.task_status = '2'
|
||||
and t1.deleted = '0'
|
||||
@ -381,6 +382,20 @@
|
||||
</choose>
|
||||
</where>
|
||||
</select>
|
||||
<select id="selectAutoCreateCycleTaskForever"
|
||||
resultType="cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO">
|
||||
select
|
||||
t1.*
|
||||
from
|
||||
robot_task_detail t1, robot_task t2
|
||||
where
|
||||
t2.id = t1.robot_task_id
|
||||
and t2.remaining_cycle_number = 1000000
|
||||
and t2.task_status = '2'
|
||||
and t1.task_status = '2'
|
||||
and t1.deleted = '0'
|
||||
and t2.deleted = '0'
|
||||
</select>
|
||||
|
||||
|
||||
<!--通过主键修改数据-->
|
||||
@ -447,6 +462,9 @@
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime},
|
||||
</if>
|
||||
<if test="occurError != null">
|
||||
occur_error = #{occurError},
|
||||
</if>
|
||||
<if test="deleted != null">
|
||||
deleted = #{deleted},
|
||||
</if>
|
||||
@ -466,6 +484,19 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
<update id="setTaskUnDo">
|
||||
update
|
||||
robot_task_detail
|
||||
set
|
||||
task_status = '0',
|
||||
task_stage = '0'
|
||||
where
|
||||
id in
|
||||
<foreach collection="ids" item="id" index="index" open="(" close=")"
|
||||
separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!--通过主键删除-->
|
||||
<delete id="deleteById">
|
||||
@ -473,6 +504,9 @@
|
||||
from robot_task_detail
|
||||
where id = #{id}
|
||||
</delete>
|
||||
<delete id="truncate">
|
||||
TRUNCATE TABLE robot_task_detail
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
@ -496,11 +496,28 @@
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="setTaskUnDo">
|
||||
update
|
||||
robot_task
|
||||
set
|
||||
task_status = '0',
|
||||
task_stage = '0'
|
||||
where
|
||||
id in
|
||||
<foreach collection="ids" item="id" index="index" open="(" close=")"
|
||||
separator=",">
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!--通过主键删除-->
|
||||
<delete id="deleteById">
|
||||
delete
|
||||
from robot_task
|
||||
where id = #{id}
|
||||
</delete>
|
||||
<delete id="truncate">
|
||||
TRUNCATE TABLE robot_task
|
||||
</delete>
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user