package com.qianwen.smartman.modules.cps.controller; 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.util.List; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.mp.support.Query; import com.qianwen.core.oss.model.BladeFile; import com.qianwen.core.scanner.modular.annotation.DeleteResource; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.annotation.PutResource; 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.core.tool.utils.DateUtil; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.modules.cps.excel.MalfunctionTypeExcel; import com.qianwen.smartman.modules.cps.excel.MalfunctionTypeImport; import com.qianwen.smartman.modules.cps.service.IMalfunctionTypeService; import com.qianwen.smartman.modules.cps.vo.MalfunctionTypeRecordVO; import com.qianwen.smartman.modules.cps.vo.MalfunctionTypeVO; import com.qianwen.smartman.modules.cps.wrapper.MalfunctionTypeExcelWrapper; import com.qianwen.smartman.modules.resource.builder.oss.OssBuilder; import com.qianwen.smartman.modules.resource.enums.TemplateEnum; import com.qianwen.smartman.modules.resource.service.ISystemResourceService; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @ApiResource({"smis/malfunction"}) @Api(value = "故障类型", tags = {"故障类型"}) @RestController public class MalfunctionTypeController extends BladeController { private final IMalfunctionTypeService malfunctionTypeService; private final OssBuilder ossBuilder; private final ISystemResourceService systemResourceService; public MalfunctionTypeController(final IMalfunctionTypeService malfunctionTypeService, final OssBuilder ossBuilder, final ISystemResourceService systemResourceService) { this.malfunctionTypeService = malfunctionTypeService; this.ossBuilder = ossBuilder; this.systemResourceService = systemResourceService; } @ApiOperationSupport(order = 1) @PostResource({"/save"}) @ApiOperation("新增或更改故障类型") @PreAuth public R save(@RequestBody MalfunctionTypeVO malfunctionTypeVO) { return R.data(this.malfunctionTypeService.insert(malfunctionTypeVO)); } @ApiOperationSupport(order = 2) @GetResource({"/page"}) @ApiOperation("分页/查询故障类型列表") @PreAuth public R> page(@ApiParam("分页条件") Query query, @RequestParam("malfunctionTypeCodeOrName") @ApiParam("故障类型编号或姓名") String keyword, @RequestParam(value = "status", required = false) @ApiParam("1 启用 0 停用") Integer status) { return R.data(this.malfunctionTypeService.listPage(query, keyword, status)); } @ApiOperationSupport(order = 3) @ApiOperation("批量删除故障类型") @PreAuth @DeleteResource({"/delete"}) public R delete(@RequestParam("malfunctionTypeIds") String ids, @RequestParam("type") @ApiParam("删除传0 停用传1") Integer type) { return R.data(this.malfunctionTypeService.deleteMalfunctionTypeByIdList(Func.toLongList(ids), type)); } @ApiOperationSupport(order = 4) @GetResource({"/detail"}) @ApiOperation(value = "故障类型详情", notes = "传入id") public R detail(@RequestParam("malfunctionTypeId") String malfunctionTypeId) { return R.data(this.malfunctionTypeService.detail(Long.valueOf(Func.toLong(malfunctionTypeId)))); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @PostResource({"/export-malfunctionType"}) @ApiOperation("导出故障类型") @PreAuth public R exportMalfunctionType(@RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "status", required = false) @ApiParam("1 启用 0 停用") Integer status) { IPage pages = this.malfunctionTypeService.listPage(new Query().setCurrent(1).setSize(-1), keyword, status); List list = MalfunctionTypeExcelWrapper.build().pageVO(pages).getRecords(); String fileName = String.format("%s-%s.xlsx", "故障类型数据", DateUtil.time()); MultipartFile multipartFile = ExcelUtil.exportToMultipartFile(fileName, "故障类型表", list, MalfunctionTypeExcel.class); BladeFile bladeFile = this.ossBuilder.tempTemplate().putFile(multipartFile.getOriginalFilename(), multipartFile); return R.data(bladeFile); } @ApiOperationSupport(order = 6) @PostResource({"/import-malfunctionType"}) @ApiOperation("导入故障类型") @PreAuth public R importMalfunctionType(MultipartFile file) { List data = ExcelUtil.read(file, 0, 2, MalfunctionTypeImport.class); return R.data(this.malfunctionTypeService.importMalfunctionType(data)); } @ApiOperationSupport(order = 7) @PutResource({"/update-malfunctionType"}) @ApiOperation("编辑故障类型") @PreAuth public R updateMalfunctionType(@RequestBody MalfunctionTypeVO malfunctionTypeVO) { return R.data(this.malfunctionTypeService.updateMalfunctionType(malfunctionTypeVO)); } @ApiOperationSupport(order = 8) @GetResource({"/export-template"}) @ApiOperation("导出模板") @PreAuth public R exportTemplate() { return R.data(this.systemResourceService.getBusinessTemplateInfo(TemplateEnum.MALFUNCTION_TYPE)); } @ApiOperationSupport(order = 9) @GetResource({"/malfunction-code-list"}) @ApiOperation(value = "获取故障编码list", notes = "给维修记录故障码提供") public R> getCodeAndRecord() { return R.data(this.malfunctionTypeService.getCodeAndRecord()); } }