whyclxw
2025-02-26 6b390f3225ca3084df8afc515ff07a638dc15f80
软件上传源码和下载
1个文件已修改
4个文件已添加
206 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/SoftcodeController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/SoftcodeMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/Softcode.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/SoftcodeService.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/SoftwareService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/SoftcodeController.java
New file
@@ -0,0 +1,46 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.Software;
import com.whyc.service.SoftcodeService;
import com.whyc.service.SoftwareService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@Api(tags = "源码管理")
@RestController
@RequestMapping("softcode")
public class SoftcodeController {
    @Autowired
    private SoftcodeService service;
    @Autowired
    private SoftwareService wareService;
    @ApiOperation("源码上传")
    @PostMapping("uploadCode")
    public Response uploadCode(@RequestParam MultipartFile file, @RequestParam String softIds) throws IOException {
        return service.uploadCode(file,softIds);
    }
    @ApiOperation(value = "根据软件id实现源码下载")
    @GetMapping("downLoadCode")
    public void downLoadCode(HttpServletRequest req, HttpServletResponse resp, @RequestParam String softId){
        service.downLoadCode(req,resp,softId);
    }
    @ApiOperation(value = "根据板号和物料编码查询软件记录")
    @GetMapping("getSoftwareByBoardAndMaterialCode")
    public Response getSoftwareByBoardAndMaterialCode(@RequestParam String board,@RequestParam String materialCode){
        return wareService.getSoftwareByBoardAndMaterialCode(board,materialCode);
    }
}
src/main/java/com/whyc/mapper/SoftcodeMapper.java
New file
@@ -0,0 +1,6 @@
package com.whyc.mapper;
import com.whyc.pojo.Softcode;
public interface SoftcodeMapper extends CustomMapper<Softcode>{
}
src/main/java/com/whyc/pojo/Softcode.java
New file
@@ -0,0 +1,43 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import org.apache.ibatis.type.Alias;
@TableName(value = "tb_softcode")
@Alias("Softcode")
public class Softcode {
    private Integer num;
    @ApiModelProperty("软件id")
    private String softId;
    @ApiModelProperty("源码路径")
    private String codeUrl;
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
    public String getSoftId() {
        return softId;
    }
    public void setSoftId(String softId) {
        this.softId = softId;
    }
    public String getCodeUrl() {
        return codeUrl;
    }
    public void setCodeUrl(String codeUrl) {
        this.codeUrl = codeUrl;
    }
}
src/main/java/com/whyc/service/SoftcodeService.java
New file
@@ -0,0 +1,102 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.whyc.constant.UserOperation;
import com.whyc.dto.FileDirPath;
import com.whyc.dto.Response;
import com.whyc.mapper.SoftcodeMapper;
import com.whyc.mapper.SoftwareMapper;
import com.whyc.pojo.Softcode;
import com.whyc.pojo.Software;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import com.whyc.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class SoftcodeService {
    @Autowired(required = false)
    private SoftcodeMapper mapper;
    @Autowired
    private DocLogService logService;
    //源码上传
    public Response uploadCode(MultipartFile file, String softIds) throws IOException {
        String[] softList=softIds.split(",");
        String fileName = file.getOriginalFilename();
        Date date = new Date();
        String dateUnion = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(date);
        //存储路径
        String rootFile = CommonUtil.getRootFile();
        String softcodeDir = rootFile + "software" + File.separator +"code"+ File.separator + dateUnion;
        String softcodeHttpUrl = softcodeDir.substring(softcodeDir.lastIndexOf("doc_file"+ File.separator + "software"));
        File softwareDirFile = new File(softcodeDir);
        if(!softwareDirFile.exists()){
            softwareDirFile.mkdirs();
        }
        String codeUrl=softcodeDir+File.separator+fileName;
        file.transferTo(new File(codeUrl));
        if(softList.length>0){
            for(String softId:softList){
                Softcode softcode=new Softcode();
                softcode.setSoftId(softId);
                softcode.setCodeUrl(softcodeHttpUrl+File.separator+fileName);
                //判断是否存在源码,存在修改,不存在添加
                if(mapper.selectOne(new QueryWrapper<Softcode>().eq("soft_id",softId))!=null){
                    mapper.update(softcode,new UpdateWrapper<Softcode>().eq("soft_id",softId));
                }else{
                    mapper.insert(softcode);
                }
            }
        }
        return new Response().set(1,true,"源码上传");
    }
    //根据软件id实现源码下载
    public void downLoadCode(HttpServletRequest req, HttpServletResponse resp, String softId) {
        String fileDirName = FileDirPath.getFileDirName();
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("soft_id",softId);
        wrapper.last("limit 1");
        Softcode softcode=mapper.selectOne(wrapper);
        String filename=softcode.getCodeUrl().substring(softcode.getCodeUrl().lastIndexOf("\\")+1);
        try {
            // 转码防止乱码
            //resp.addHeader("Content-Disposition", "attachment;filename=" + new String(softwareName.getBytes("UTF-8"), "ISO8859-1"));
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode (filename, "utf-8"));
            OutputStream out = resp.getOutputStream();
            FileInputStream in = new FileInputStream(fileDirName+ File.separator+softcode.getCodeUrl());
            int len=0;
            byte[] buffer =new byte[1024];
            //7. 将缓冲区中的数据输出
            while ((len=in.read(buffer))>0){
                out.write(buffer,0,len);
            }
            in.close();
            out.close();
        } catch (FileNotFoundException | UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        //记录日志
        logService.recordOperationLogDownLoad(ActionUtil.getUser().getId(),ActionUtil.getUser().getName(), UserOperation.TYPE_DOWNLOAD_SOFWARE.getType(),new Date(),req.getRemoteAddr()
                ,filename,fileDirName+File.separator+softcode.getCodeUrl(),"",String.valueOf(softId),"");
    }
}
src/main/java/com/whyc/service/SoftwareService.java
@@ -330,4 +330,13 @@
        int flag=mapper.delete(wrapper);
        return new Response().set(1,flag>0,"件id实现软件删除");
    }
    //根据板号和物料编码查询软件记录
    public Response getSoftwareByBoardAndMaterialCode(String board, String materialCode) {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("board_number",board);
        wrapper.eq("apply_material_code",materialCode);
        List<Software> softwareList = mapper.selectList(wrapper);
        return new Response().setII(1,softwareList!=null,softwareList,"根据板号和物料编码查询软件记录");
    }
}