diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java index 0ff0e0c8c..a2f43178d 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/FileController.java @@ -107,5 +107,10 @@ public class FileController { return success(fileService.createBusinessReturnFile(file)); } - + @PostMapping("/businessUploadFile") + @Operation(summary = "上传文件") + @PermitAll + public CommonResult businessUploadFile(@RequestParam("uploadFiles") MultipartFile file) throws Exception { + return success(fileService.businessUploadFile(file)); + } } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java index 6df3709c2..267e76099 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java @@ -74,4 +74,11 @@ public interface FileService { * @return */ BusinessFileVO createBusinessReturnFile(MultipartFile file) throws IOException; + + /** + * 上传文件 + * @param file + * @return + */ + BusinessFileVO businessUploadFile(MultipartFile file) throws IOException; } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java index db53d7b17..38b0cfa24 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.infra.service.file; import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.io.FileUtils; @@ -18,12 +19,16 @@ import cn.iocoder.yudao.module.infra.framework.file.core.client.FileClient; import cn.iocoder.yudao.module.infra.framework.file.core.client.s3.FilePresignedUrlRespDTO; import cn.iocoder.yudao.module.infra.framework.file.core.utils.FileTypeUtils; import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.IOException; +import java.io.*; +import java.nio.file.Files; +import java.util.HashMap; +import java.util.UUID; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; @@ -42,6 +47,9 @@ public class FileServiceImpl implements FileService { @Resource private FileMapper fileMapper; + @Value("${file.upload-path}") + private String uploadPath; + @Override public PageResult getFilePage(FilePageReqVO pageReqVO) { return fileMapper.selectPage(pageReqVO); @@ -190,4 +198,23 @@ public class FileServiceImpl implements FileService { return fileDo; } + @Override + public BusinessFileVO businessUploadFile(MultipartFile file) throws IOException { + File files = new File(""); + String filePath = files.getCanonicalPath() + uploadPath; + String fileName = file.getOriginalFilename(); + fileName = UUID.randomUUID() + "_" + fileName; + File dir = new File(filePath); + if (!dir.exists()) { + dir.mkdirs(); + } + File fileObj = new File(filePath, fileName); + file.transferTo(fileObj); +// 把上传上来的文件存储到磁盘上:(指定一个路径) +// file.transferTo(uploadFile); + BusinessFileVO fileDo = new BusinessFileVO(); + fileDo.setUrl(filePath+fileName); + return fileDo; + } + } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-local.yaml b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-local.yaml index ec209fde2..44c53b733 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-local.yaml +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-local.yaml @@ -157,3 +157,6 @@ yudao: mock-enable: true access-log: # 访问日志的配置项 enable: false + +file: + upload-path: /Users/Documents/image/ # 文件上传路径 \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java index fdf0bfdb9..2d8955e5c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/robot/RobotTaskStatusApiImpl.java @@ -147,14 +147,7 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { */ public RobotTaskDetailActionLogDO setLastLogDone(String mac){ String robotNo = robotInformationService.getRobotNoByMac(mac); - RobotTaskDetailActionLogDO lastLog = taskDetailActionLogService.getLastTaskByRobotNo(robotNo); - if (ObjectUtil.isNotEmpty(lastLog)) { - lastLog.setEndTime(LocalDateTime.now()); - lastLog.setActionStatus(ActionStatusEnum.DONE.getType()); - RobotTaskDetailActionLogSaveReqVO updateObj = BeanUtils.toBean(lastLog, RobotTaskDetailActionLogSaveReqVO.class); - taskDetailActionLogService.updateTaskDetailActionLog(updateObj); - } - return lastLog; + return taskDetailActionLogService.setPreviousTaskDoneByRobotNo(robotNo); } /** @@ -172,6 +165,10 @@ public class RobotTaskStatusApiImpl implements RobotTaskStatusApi { logOne.setRobotNo(robotNo); logOne.setStartTime(LocalDateTime.now()); logOne.setTaskDetailId(robotCompleteTaskDTO.getOrderId()); + if (ObjectUtil.isNotEmpty(lastLog)) { + logOne.setCommandType(lastLog.getCommandType()); + logOne.setTaskNo(lastLog.getTaskNo()); + } taskDetailActionLogMapper.insert(logOne); redisUtil.set(robotDoingActionKey, logOne.getActionMsg(), doingActionCacheTime); moveToWaitService.updateWaitStatus(robotCompleteTaskDTO.getOrderId(), WaitStatusEnum.GO_TO_WAIT.getType()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogService.java index f23c87807..596a61c27 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogService.java @@ -58,6 +58,13 @@ public interface RobotTaskDetailActionLogService { */ void addLogInCache(List logs); + /** + * 设置上一条数据完成 + * @param robotNo + * @return + */ + RobotTaskDetailActionLogDO setPreviousTaskDoneByRobotNo(String robotNo); + /** * 获取车辆的最后一条任务 * @param robotNo diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogServiceImpl.java index fcee4164c..90a3c9f28 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/log/RobotTaskDetailActionLogServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.service.log; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.constant.robot.RobotTaskChcheConstant; import cn.iocoder.yudao.module.system.controller.admin.log.vo.RobotTaskDetailActionLogPageReqVO; @@ -8,6 +9,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.log.RobotTaskDetailActionLo import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO; import cn.iocoder.yudao.module.system.dal.mysql.log.RobotTaskDetailActionLogMapper; import cn.iocoder.yudao.module.system.enums.robot.RobotTaskStatusEnum; +import cn.iocoder.yudao.module.system.enums.robot.actionlog.ActionStatusEnum; import cn.iocoder.yudao.module.system.util.redis.RedisUtil; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Value; @@ -16,6 +18,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.*; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -94,6 +97,20 @@ public class RobotTaskDetailActionLogServiceImpl implements RobotTaskDetailActio } } + @Override + public RobotTaskDetailActionLogDO setPreviousTaskDoneByRobotNo(String robotNo) { + RobotTaskDetailActionLogDO lastLog = taskDetailActionLogMapper.selectOne(new LambdaQueryWrapperX() + .eq(RobotTaskDetailActionLogDO::getRobotNo, robotNo) + .orderByDesc(RobotTaskDetailActionLogDO::getCreateTime) + .last("limit 1")); + if (ObjectUtil.isNotEmpty(lastLog)) { + lastLog.setEndTime(LocalDateTime.now()); + lastLog.setActionStatus(ActionStatusEnum.DONE.getType()); + taskDetailActionLogMapper.selectById(lastLog); + } + return lastLog; + } + @Override public RobotTaskDetailActionLogDO getLastTaskByRobotNo(String robotNo) { return taskDetailActionLogMapper.selectOne(new LambdaQueryWrapperX()