gongchunyi
7 小时以前 edc65cbcc66f07ba86b9c9806475b6af695d782f
feat: 设备保修新增文件上传
已修改4个文件
137 ■■■■ 文件已修改
src/main/java/com/ruoyi/common/enums/FileNameType.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/DeviceRepairController.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/IDeviceRepairService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -1,6 +1,8 @@
package com.ruoyi.common.enums;
import lombok.Getter;
@Getter
public enum FileNameType {
    SALE(1),      // 销售
@@ -14,17 +16,13 @@
    SHIP(9),//发货台账
    INSPECTION_PRODUCTION_BEFORE(10),
    INSPECTION_PRODUCTION_AFTER(11),
    INSPECTION(12);//巡检 生产前
    INSPECTION(12),//巡检 生产前
    EQUIPMENT_WARRANTY(13);   //  设备保修
    private final int value;
    FileNameType(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    // 根据整数值获取对应的枚举值
src/main/java/com/ruoyi/device/controller/DeviceRepairController.java
@@ -7,13 +7,17 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
@Api(tags = "设备报修管理")
@RequestMapping("/device/repair")
@@ -28,13 +32,13 @@
    @ApiOperation("设备报修列表")
    @GetMapping("/page")
    public AjaxResult page(Page page , DeviceRepairDto deviceRepairDto) {
        return AjaxResult.success(deviceRepairService.queryPage(page,deviceRepairDto));
    public AjaxResult page(Page page, DeviceRepairDto deviceRepairDto) {
        return AjaxResult.success(deviceRepairService.queryPage(page, deviceRepairDto));
    }
    @PostMapping()
    @ApiOperation("添加设备报修")
    public AjaxResult add( @RequestBody DeviceRepair deviceRepair) {
    public AjaxResult add(@RequestBody DeviceRepair deviceRepair) {
        return deviceRepairService.saveDeviceRepair(deviceRepair);
    }
@@ -45,15 +49,15 @@
        return AjaxResult.success(byId);
    }
    @PutMapping ()
    @PutMapping()
    @ApiOperation("修改设备报修")
    public AjaxResult update( @RequestBody DeviceRepair deviceRepair) {
    public AjaxResult update(@RequestBody DeviceRepair deviceRepair) {
        return deviceRepairService.updateDeviceRepair(deviceRepair);
    }
    @PostMapping ("repair")
    @PostMapping("repair")
    @ApiOperation("设备维修")
    public AjaxResult repair( @RequestBody DeviceRepair deviceRepair) {
    public AjaxResult repair(@RequestBody DeviceRepair deviceRepair) {
        return deviceRepairService.updateDeviceRepair(deviceRepair);
    }
@@ -72,4 +76,26 @@
    public void export(HttpServletResponse response, Long[] ids) {
        deviceRepairService.export(response, ids);
    }
    @PostMapping("/uploadFile")
    @ApiOperation("设备保修-附件上传")
    public AjaxResult uploadFile(MultipartFile file, Long deviceRepairId) {
        deviceRepairService.uploadFile(file, deviceRepairId);
        return AjaxResult.success();
    }
    @GetMapping("/file/{deviceRepairId}")
    @ApiOperation("设备保修-文件列表")
    public AjaxResult getFiles(@PathVariable("deviceRepairId") Long deviceRepairId) {
        List<CommonFile> list = deviceRepairService.getFiles(deviceRepairId);
        return AjaxResult.success(list);
    }
    @DeleteMapping("/file/{fileId}")
    @ApiOperation("设备保修-删除文件")
    public AjaxResult deleteFile(@PathVariable("fileId") Long fileId) {
        deviceRepairService.deleteFile(fileId);
        return AjaxResult.success();
    }
}
src/main/java/com/ruoyi/device/service/IDeviceRepairService.java
@@ -6,8 +6,11 @@
import com.ruoyi.device.dto.DeviceRepairDto;
import com.ruoyi.device.pojo.DeviceRepair;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.pojo.CommonFile;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface IDeviceRepairService extends IService<DeviceRepair> {
@@ -21,4 +24,11 @@
    void export(HttpServletResponse response, Long[] ids);
    DeviceRepairDto detailById(Long id);
    void uploadFile(MultipartFile file, Long deviceRepairId);
    List<CommonFile> getFiles(Long deviceRepairId);
    void deleteFile(Long fileId);
}
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -1,8 +1,11 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
@@ -15,14 +18,22 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.other.service.TempFileService;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Service
@@ -36,6 +47,13 @@
    private DeviceRepairMapper deviceRepairMapper;
    @Autowired
    private IDeviceLedgerService deviceLedgerService;
    @Autowired
    private CommonFileMapper commonFileMapper;
    @Autowired
    private TempFileService tempFileService;
    @Override
    public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
@@ -48,7 +66,7 @@
        deviceRepair.setDeviceName(byId.getDeviceName());
        deviceRepair.setDeviceModel(byId.getDeviceModel());
        boolean save = this.save(deviceRepair);
        if (save){
        if (save) {
            return AjaxResult.success();
        }
        return AjaxResult.error();
@@ -63,7 +81,7 @@
            deviceDefectRecordDto.setDeviceLedgerId(id);
            deviceDefectRecordDto.setStatus("严重缺陷");
            List<DeviceDefectRecordDto> records = deviceDefectRecordService.listPage(new Page<>(1, -1), deviceDefectRecordDto).getRecords();
            if (!records.isEmpty()){
            if (!records.isEmpty()) {
                records.forEach(deviceDefectRecord -> {
                    deviceDefectRecord.setStatus("正常");
                    deviceDefectRecordService.updateByDDR(deviceDefectRecord);
@@ -81,23 +99,23 @@
            ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
            supplierManageList.stream().forEach(deviceRepair -> {
                DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto();
                BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto);
                BeanUtils.copyProperties(deviceRepair, deviceRepairExeclDto);
                deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "待维修" : deviceRepair.getStatus() == 1 ? "完结" : "失败");
                deviceLedgerExeclDtos.add(deviceRepairExeclDto);
            });
            ExcelUtil<DeviceRepairExeclDto> util = new ExcelUtil<DeviceRepairExeclDto>(DeviceRepairExeclDto.class);
            util.exportExcel(response, deviceLedgerExeclDtos, "设备报修导出");
        }else {
        } else {
            ArrayList<Long> arrayList = new ArrayList<>();
            Arrays.stream(ids).map(id -> {
                return arrayList.add( id);
                return arrayList.add(id);
            });
            List<DeviceRepair> supplierManageList = deviceRepairMapper.selectBatchIds(arrayList);
            ArrayList<DeviceRepairExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
            supplierManageList.stream().forEach(deviceRepair -> {
                DeviceRepairExeclDto deviceRepairExeclDto = new DeviceRepairExeclDto();
                BeanUtils.copyProperties(deviceRepair,deviceRepairExeclDto);
                BeanUtils.copyProperties(deviceRepair, deviceRepairExeclDto);
                deviceRepairExeclDto.setStatusStr(deviceRepair.getStatus() == 0 ? "待维修" : deviceRepair.getStatus() == 1 ? "完结" : "失败");
                deviceLedgerExeclDtos.add(deviceRepairExeclDto);
@@ -114,4 +132,51 @@
        return deviceRepairMapper.detailById(id);
    }
    @Override
    public void uploadFile(MultipartFile file, Long deviceRepairId) {
        if (file == null || file.isEmpty()) {
            throw new ServiceException("上传失败,文件不能为空");
        }
        if (deviceRepairId == null || deviceRepairId <= 0) {
            throw new ServiceException("上传失败,设备报修ID不能为空");
        }
        try {
            tempFileService.uploadByCommon(file, FileNameType.EQUIPMENT_WARRANTY.getValue(), deviceRepairId);
        } catch (Exception e) {
            throw new ServiceException("上传失败," + e.getMessage());
        }
    }
    @Override
    public List<CommonFile> getFiles(Long deviceRepairId) {
        if (deviceRepairId == null || deviceRepairId <= 0) {
            return Collections.emptyList();
        }
        return commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                .eq(CommonFile::getCommonId, deviceRepairId)
                .eq(CommonFile::getType, FileNameType.EQUIPMENT_WARRANTY.getValue()));
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteFile(Long fileId) {
        if (fileId == null || fileId <= 0) {
            throw new ServiceException("删除失败,传入数据异常");
        }
        CommonFile commonFile = commonFileMapper.selectById(fileId);
        if (commonFile == null) {
            throw new ServiceException("删除失败,文件不存在");
        }
        try {
            if (commonFile.getUrl() != null && !commonFile.getUrl().isEmpty()) {
                Files.deleteIfExists(Paths.get(commonFile.getUrl()));
            }
        } catch (Exception e) {
            log.error("设备保修文件删除失败: {}", e.getMessage());
            throw new ServiceException("删除失败," + e.getMessage());
        }
        commonFileMapper.deleteById(fileId);
    }
}