package org.springblade.mdm.basesetting.machine.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.oss.OssTemplate; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.machine.service.MachineService; import org.springblade.mdm.basesetting.machine.service.MachineImportService; import org.springblade.mdm.basesetting.machine.vo.MachineExcel; import org.springblade.mdm.basesetting.machine.vo.MachineQueryVO; import org.springblade.mdm.basesetting.machine.vo.MachineSaveVO; import org.springblade.mdm.basesetting.machine.vo.MachineVO; import org.springblade.mdm.basesetting.producedivision.vo.ImportResult; import org.springblade.mdm.commons.service.ParamService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; import java.util.ArrayList; import java.util.List; @Slf4j @RestController @RequestMapping("/machine") @Tag(name = "机床", description = "机床") public class MachineController { @Autowired private MachineService service; @Autowired private MachineImportService machineImportService; @Autowired private ParamService paramService; @Autowired private OssTemplate ossTemplate; /** * 新增 */ @PostMapping("/save") @Operation(summary = "新增", description = "机床信息") public R save(@RequestBody MachineSaveVO vo) { try { service.saveMachine(vo); }catch (Exception e) { log.error("新增机床失败", e);; return R.fail(e.getMessage()); } return R.status(true); } /** * 修改 */ @Operation(summary = "修改", description = "机床信息") @PostMapping("/update") public R update(@RequestBody MachineSaveVO vo) { try{ return R.data(service.updateMachine(vo)); }catch(Exception e){ return R.fail(e.getMessage()); } } @Operation(summary = "详情", description = "查询机床详情") @GetMapping("/detail") public R deatail(long id) { return R.data(service.detail(id)); } @PostMapping("import") @ApiOperationSupport(order = 1) @Operation(summary = "机床导入", description = "机床导入,全部成功返回空串,部分成功返回具体信息") public R importMachines(@RequestParam MultipartFile file) { try { return R.data(machineImportService.importMachines(file)); }catch (Exception e){ log.error("导入错误",e); return R.fail(e.getMessage()); } } /** * 删除 */ @Operation(summary = "删除", description = "删除") @PostMapping("/remove") public R remove(@RequestParam String ids) { try { service.removeBatchByIds(Func.toLongList(ids)); } catch (Exception e) { log.error("删除异常",e); return R.fail(e.getMessage()); } return R.status(true); } /** * 分页 */ @Operation(summary = "分页查询", description = "名称或编码") @GetMapping("/page") public R> page(MachineQueryVO query) { IPage pages = service.pageQuery(query); return R.data(pages); } @GetMapping("export") @ApiOperationSupport(order = 13) @Operation(summary = "导出机床", description = "名称或编码") public void export(MachineQueryVO query, HttpServletResponse response) { query.setCurrent(1); query.setSize(Integer.MAX_VALUE); IPage pages = service.pageQuery(query); List list = new ArrayList<>(); pages.getRecords().forEach(m ->{ MachineExcel excelVO = new MachineExcel(); BeanUtils.copyProperties(m, excelVO); list.add(excelVO); }); ExcelUtil.export(response, "机床数据" + DateUtil.time(), "机床数据表", list, MachineExcel.class); } @Operation(summary = "下载机床导入模板", description = "下载机床导入模板") @GetMapping("/download-template") public void downloadTemplate(HttpServletResponse response) { String PARAMKEY = "MACHINE_TEMPLATE"; try { String filename = "machinetemplate.xlsx"; response.setHeader("Content-Disposition", "attachment; filename="+filename); response.setContentType("application/octet-stream"); String ossName = paramService.getParamValue(PARAMKEY,""); try(InputStream ins = ossTemplate.statFileStream(ossName);){ IOUtils.copy(ins,response.getOutputStream()); } } catch (Exception e) { log.error("导出分机床模板异常", e); } } }