package com.qianwen.smartman.modules.dnc.controller; import cn.hutool.core.io.IoUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.smartman.common.constant.DncConstant; import com.qianwen.core.mp.support.Query; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tool.api.R; import com.qianwen.smartman.modules.dnc.dto.serial.SerialInfoDTO; import com.qianwen.smartman.modules.dnc.dto.serial.SerialSetting; import com.qianwen.smartman.modules.dnc.service.ITransferDirectoryFileService; import com.qianwen.smartman.modules.dnc.vo.DncReadFileVO; import com.qianwen.smartman.modules.dnc.vo.FileHistoryVO; import com.qianwen.smartman.modules.dnc.vo.FileVersionSwitchVO; import com.qianwen.smartman.modules.dnc.vo.MachineToolBatchWriteFileVO; import com.qianwen.smartman.modules.dnc.vo.ReceiveScheduleVO; import com.qianwen.smartman.modules.dnc.vo.SendScheduleVO; import com.qianwen.smartman.modules.dnc.vo.SerialSendVO; import com.qianwen.smartman.modules.dnc.vo.TransferDirectoryFilePageVO; import com.qianwen.smartman.modules.dnc.vo.TransferDirectoryFileVo; import com.qianwen.smartman.modules.dnc.vo.UploadFileOssVO; import com.qianwen.smartman.modules.dnc.vo.WorkstationDetailVO; import com.qianwen.smartman.modules.dnc.vo.WorkstationDirectoryFileVO; import com.qianwen.smartman.modules.dnc.vo.WorkstationFileSearchVO; import com.qianwen.smartman.modules.dnc.vo.WorkstationFileVO; import com.qianwen.smartman.modules.dnc.vo.WorkstationFromDocumentsVO; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @ApiResource({"blade-dnc/transfer-directory"}) @Api(value = "传输目录文件增删接口", tags = {"传输目录文件增删controller"}) @RestController /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/dnc/controller/TransferDirectoryFileController.class */ public class TransferDirectoryFileController { private static final Logger log = LoggerFactory.getLogger(TransferDirectoryFileController.class); private final ITransferDirectoryFileService transferDirectoryFileService; public TransferDirectoryFileController(final ITransferDirectoryFileService transferDirectoryFileService) { this.transferDirectoryFileService = transferDirectoryFileService; } @PostResource({"/file"}) @ApiOperation(value = "工位目录文件保存", notes = "工位目录文件保存") public R> save(@RequestBody WorkstationFileVO workstationFileVo) { return R.data(this.transferDirectoryFileService.saveBatchFile(workstationFileVo)); } @PreAuth @PostResource({"/duplicate-file"}) @ApiOperation(value = "验证文件是否重复", notes = "验证文件是否重复 true 是 false 否") public R existDuplicateFile(@RequestBody WorkstationFileVO workstationFileVo) { return R.data(this.transferDirectoryFileService.existDuplicateFileBatch(workstationFileVo)); } @PostResource({"/fileList"}) @ApiOperation(value = "获取工位目录下的文件列表", notes = DncConstant.WORK_STATION_FILE) public R> getWorkstationFile(@RequestBody WorkstationDetailVO workstationDetailVO) { return R.data(this.transferDirectoryFileService.fileList(workstationDetailVO)); } @PreAuth @GetResource({"/delete-file/{workstationFileId}"}) @ApiOperation(value = "删除工位文件", notes = "工位文件id") public R deleteWorkstationFile(@PathVariable @ApiParam("工位id") String workstationFileId) { return R.data(this.transferDirectoryFileService.deleteWorkstationDirectoryFile(workstationFileId)); } @PreAuth @PostResource({"/workstation-from-documents"}) @ApiOperation(value = "工位文件批量上传到我的文档", notes = "上传文件:fileType 加工程序 1 工艺文件 2") public R> workstationFromDocuments(@RequestBody WorkstationFromDocumentsVO workstationFromDocumentsVO) { List uploadFileOssList = this.transferDirectoryFileService.workstationFromFile(workstationFromDocumentsVO.getFileType(), workstationFromDocumentsVO.getList()); return R.data(uploadFileOssList); } @PreAuth @GetResource({"/{fileId}/fileHistoryList"}) @ApiOperation(value = "工位文件版本历史列表", notes = "文件id") public R> getFileHistory(@PathVariable @ApiParam("工位文件id") String fileId) { return R.data(this.transferDirectoryFileService.getFileCoverHistory(fileId)); } @PreAuth @PostResource({"/switch-file"}) @ApiOperation(value = "切换文件版本", notes = "切换当前文件版本") public R switchFile(@RequestBody FileVersionSwitchVO fileVersionSwitchVO) { return R.data(this.transferDirectoryFileService.fileVersionSwitching(fileVersionSwitchVO)); } @PreAuth @PostResource({"/page"}) @ApiOperation(value = "工位文件(分页)", notes = "根据工位workstationId获取文件列表") public IPage filePages(@RequestBody WorkstationFileSearchVO searchDTO, Query query) { return this.transferDirectoryFileService.getFilePages(searchDTO, query); } @PostResource({"/online-write-file"}) @ApiOperation(value = "文件在线写入", notes = "文件写入") public R onlineWrite(@Valid @RequestBody MachineToolBatchWriteFileVO writeFileVO) { return R.data(this.transferDirectoryFileService.batchOnlineWriteFile(writeFileVO)); } @PostResource({"/online-read-file"}) @ApiOperation(value = "在线读文件", notes = "读取机床文件") public void onlineRead(@Valid @RequestBody DncReadFileVO dncReadFileVO, HttpServletResponse response) { try { InputStream objectStream = this.transferDirectoryFileService.readDncOnlineFile(dncReadFileVO); response.setContentType("application/octet-stream; charset=UTF-8"); response.addHeader("Expires", "0"); response.addHeader("Pragma", "no-cache"); response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); IoUtil.copy(objectStream, response.getOutputStream()); if (objectStream != null) { if (0 != 0) { objectStream.close(); } else { objectStream.close(); } } } catch (IOException e) { e.printStackTrace(); } } @GetResource({"/get-online-read-file"}) @ApiOperation(value = "hmi在线读文件", notes = "hmi读取机床文件") public void getOnlineRead(@RequestParam("workstationId") String workstationId, @RequestParam("fileName") String fileName, HttpServletResponse response) { DncReadFileVO dncReadFileVO = new DncReadFileVO(); dncReadFileVO.setWorkstationId(workstationId); dncReadFileVO.setFileName(fileName); log.error("------------------------------workstationId: {}", workstationId); log.error("------------------------------fileName: {}", fileName); try { InputStream objectStream = this.transferDirectoryFileService.readDncOnlineFile(dncReadFileVO); response.setContentType("application/octet-stream; charset=UTF-8"); response.addHeader("Expires", "0"); response.addHeader("Pragma", "no-cache"); response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); IoUtil.copy(objectStream, response.getOutputStream()); if (objectStream != null) { if (0 != 0) { objectStream.close(); } else { objectStream.close(); } } } catch (IOException e) { e.printStackTrace(); } } @PostResource({"/online-del-file"}) @ApiOperation(value = "删除机床文件", notes = "删除文件") public R onlineDel(@Valid @RequestBody DncReadFileVO dncReadFileVO) { return R.data(this.transferDirectoryFileService.delOnlineFile(dncReadFileVO)); } @PostResource({"/online-file-list"}) @ApiOperation(value = "机床文件列表", notes = "文件列表") public R> getOnlineFileList(@Valid @RequestBody DncReadFileVO dncReadFileVO) { return R.data(this.transferDirectoryFileService.getOnlineFileList(dncReadFileVO)); } @ApiOperationSupport(order = 14) @GetResource({"/serial-list"}) @ApiOperation("获取串口列表") public R> allSerialList() { return R.data(this.transferDirectoryFileService.allSerialList()); } @ApiOperationSupport(order = 15) @PostResource({"/download-send"}) @ApiOperation("在线下载文件 串口发送") public R serialDownloadSend(@RequestBody SerialSendVO vo) { return R.data(this.transferDirectoryFileService.serialDownloadSend(vo)); } @ApiOperationSupport(order = 16) @GetResource({"/send-schedule"}) @ApiOperation("获取串口发送进度") public R sendSchedule() { return R.data(this.transferDirectoryFileService.sendSchedule()); } @ApiOperationSupport(order = 17) @PostResource({"/serial-receive"}) @ApiOperation("串口接收") public R serialReceive(@RequestBody SerialSetting serialSetting) { return R.data(Boolean.valueOf(this.transferDirectoryFileService.serialReceive(serialSetting))); } @ApiOperationSupport(order = 18) @GetResource({"/receive-schedule"}) @ApiOperation("接收进度") public R receiveSchedule(@RequestParam("encodingType") String encodingType) { return R.data(this.transferDirectoryFileService.receiveSchedule(encodingType)); } @ApiOperationSupport(order = 19) @GetResource({"/transport-cancel"}) @ApiOperation("关闭串口传输") public R transportCancel() { return R.data(Boolean.valueOf(this.transferDirectoryFileService.transportCancel())); } @ApiOperationSupport(order = 20) @PostResource({"/serial-save-file"}) @ApiOperation("获取文件内容保存之后 生成传输文件信息") public R> serialSaveFile(@RequestBody WorkstationDirectoryFileVO vo) { return R.data(this.transferDirectoryFileService.serialSaveFile(vo)); } }