whycxzp
2023-08-03 a90d9bcdca6f1d87bda8e76738b488dbfd9b19f5
src/main/java/com/whyc/service/SoftwareService.java
@@ -135,9 +135,9 @@
    }
    //查询软件列表的信息
    public Response getAllSoftware(String fileName,String applyMaterialCode,String applyModel,String owner, String boardNumber,int pageCurr, int pageSize) {
    public Response getAllSoftware(Integer lockFlag, String fileName, String applyMaterialCode, String applyModel, String owner, String boardNumber, int pageCurr, int pageSize) {
        PageHelper.startPage(pageCurr,pageSize);
        List list=mapper.getFileUrl(fileName,applyMaterialCode,applyModel,owner,boardNumber);
        List list=mapper.getFileUrl(lockFlag,fileName,applyMaterialCode,applyModel,owner,boardNumber);
        PageInfo pageInfo=new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"软件信息返回");
    }
@@ -158,10 +158,12 @@
        wrapper.eq("id",id);
        wrapper.last("limit 1");
        Software software=mapper.selectOne(wrapper);
        String filename=software.getFileUrl().substring(software.getFileUrl().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 ( software.getFileName()+".zip", "utf-8"));
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode (filename, "utf-8"));
            OutputStream out = resp.getOutputStream();
            FileInputStream in = new FileInputStream(fileDirName+File.separator+software.getFileUrl());
            int len=0;
@@ -185,6 +187,7 @@
        logService.recordOperationLog(docUser.getId(),docUser.getName(), UserOperation.TYPE_DOWNLOAD.getType(),new Date(),terminalIp,opreationMsg,operationDetail);
    }
    @Transactional
    public Response upload(MultipartFile file1, MultipartFile file2, String fontUpdateTime, List<Software> softwareList) throws IOException {
        String file1Name = file1.getOriginalFilename();
        String file2Name = file2.getOriginalFilename();
@@ -217,10 +220,26 @@
            software1.setFileUrl(softwareHttpUrl+File.separator+file1Name);
            software1.setExcelUrl(softwareHttpUrl+File.separator+file2Name);
            software1.setCreateTime(date);
            //锁定-专供测试人员才能解锁
            software1.setLockFlag(-1);
        }
        /* 取消自动锁定原来版本,因为新版本需要进行测试才能使用
        //锁定原来的所有版本:根据版号和软件类型
        List<String> materialCodeList = softwareList.stream().map(Software::getApplyMaterialCode).collect(Collectors.toList());
        lockByBoardNumberAndTypeAndMaterialCode(software.getBoardNumber(),software.getType(),materialCodeList);*/
        //写入数据库
        insertBatch(softwareList);
        return new Response().set(1,true,"上传完成");
    }
    private void lockByBoardNumberAndTypeAndMaterialCode(String boardNumber, String type, List<String> materialCodeList) {
        UpdateWrapper<Software> update = Wrappers.update();
        update.set("lock_flag",1)
                .set("local_reason","软件版本升级")
                .eq("board_number",boardNumber)
                .eq("type",type)
                .in("apply_material_code",materialCodeList);
        mapper.update(null,update);
    }
    private Software getByFilename(String fileName) {
@@ -262,8 +281,28 @@
            return new Response().set(1,true,"更新完成");
        }
    }
    //根据软件id修改软件锁定状态
    /**
     * 根据软件唯一值字段修改软件锁定状态,这里选取fileUrl
     *
     * @param fileUrl
     * @param lockFlag
     * @param localReason
     * @return
     */
    public Response updateSoftwareLock(String fileUrl,int lockFlag,String localReason) {
        String userName = ActionUtil.getUser().getName();
        if(lockFlag ==0){
            //只有李桂华才能解锁 待测试锁定的软件
            QueryWrapper<Software> query = Wrappers.query();
            query.eq("file_url",fileUrl).last(" limit 1");
            Software softwareInDB = mapper.selectOne(query);
            if(softwareInDB.getLockFlag() == -1){
                if(!userName.equals("李桂华")){
                    return new Response().set(1,false,"无权限解锁 待测试的软件");
                }
            }
        }
        UpdateWrapper uwrapper=new UpdateWrapper();
        uwrapper.set("lock_flag",lockFlag);
        uwrapper.set("local_reason",localReason);
@@ -271,4 +310,5 @@
        int flag=mapper.update(null,uwrapper);
        return new Response().set(1,flag>0,"锁定/解锁成功");
    }
}