lxw
2023-11-13 3e4eb655d3358650bb23cf9832bc1a7257771c48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.whyc.mapper.DevUpdateStateMapper;
import com.whyc.pojo.DevUpdateState;
import com.whyc.pojo.Response;
import com.whyc.util.FileDirPath;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
 
import java.io.File;
import java.io.IOException;
 
import static com.whyc.util.ActionUtil.createFilefolderIFNotExist;
 
@Service
public class DevUpdateStateService {
    @Autowired(required = false)
    private DevUpdateStateMapper mapper;
    //检测是否存在文件
    public boolean copyDfu(MultipartFile file,int devId){
        boolean bl=false;
        String fileDirName = FileDirPath.getFileDirName();
        String root=fileDirName+ File.separator+"FDFiles"+File.separator+devId+File.separator+"update";
        String fileFileName = file.getOriginalFilename();
        String filePath = root +File.separator+ fileFileName;
        createFilefolderIFNotExist(filePath);
        try {
            file.transferTo(new File(filePath));
            bl=true;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bl;
 
    }
    //远程升级
    public Response updateDfu(MultipartFile file,int devId) {
        if(file==null){
            return new Response().set(1,false,"文件失败,文件不存在");
        }
        String fileFileName = file.getOriginalFilename();
        boolean bl=copyDfu(file,devId);
        if(bl){
            UpdateWrapper wrapper=new UpdateWrapper();
            wrapper.set("dfu_file",fileFileName);
            wrapper.set("dfu_en",1);
            wrapper.set("dfu_wr_stat",1);
            wrapper.set("dfu_data_blocknum",1);
            wrapper.eq("dev_id",devId);
            mapper.update(null,wrapper);
            return new Response().set(1,bl,"升级文件上传成功");
        }else {
            return new Response().set(1,bl,"升级文件上传失败");
        }
 
    }
   //远程升级停止
    public Response stopDfu(int devId) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("dfu_en",3);
        wrapper.eq("dev_id",devId);
        mapper.update(null,wrapper);
        return new Response().set(1,true);
    }
 
    //dfu远程升级的websocket实时推送设备升级
    public Response getDfuStatus(int devId) {
        QueryWrapper queryWrapper=new QueryWrapper();
        queryWrapper.eq("dev_id",devId);
        queryWrapper.last("limit 1");
        DevUpdateState dfu=mapper.selectOne(queryWrapper);
        return new Response().setII(1,dfu!=null,dfu,"下载成功返回数据");
    }
}