package com.hssx.cloudmodel.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hssx.cloudmodel.constant.Constant; import com.hssx.cloudmodel.entity.*; import com.hssx.cloudmodel.entity.vo.MouldFileVO; import com.hssx.cloudmodel.entity.vo.UserVO; import com.hssx.cloudmodel.mapper.*; import com.hssx.cloudmodel.service.MouldFileService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hssx.cloudmodel.util.FileUtil; import com.hssx.cloudmodel.util.HttpRespMsg; import com.hssx.cloudmodel.util.PageUtil; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.*; import java.util.zip.ZipOutputStream; /** *

* 服务实现类 *

* * @author 吴涛涛 * @since 2019-08-07 */ @Service public class MouldFileServiceImpl extends ServiceImpl implements MouldFileService { @Resource UserMapper userMapper; @Resource MouldFileMapper mouldFileMapper; @Resource MouldOperationDynamicsMapper mouldOperationDynamicsMapper; @Resource ProjectMapper projectMapper; @Override public HttpRespMsg addFile(UserVO userVO, Integer blongType, MultipartFile file, MultipartFile file2, String path) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); if (user != null) { if (file != null && !file.isEmpty()) { MouldFile projectFile = new MouldFile(); projectFile.setUplodtorId(user.getId()); projectFile.setUploadtor(user.getUsername()); projectFile.setModelId(userVO.getMouldId()); File dir = null; dir = new File(path); // D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可 if (!dir.exists()) { dir.mkdirs(); } String fileName = ""; if (file != null && !file.isEmpty()) { fileName = file.getOriginalFilename(); projectFile.setFileName(fileName); projectFile.setFileSize(FileUtil.getReadableFileSize(file.getSize())); System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath()); int pos = fileName.lastIndexOf("."); String rand = UUID.randomUUID().toString().replaceAll("-", ""); String sufix = fileName.substring(pos); fileName = rand + sufix; projectFile.setFileType(sufix);//文件后缀 projectFile.setFileUrl("/upload/" + fileName); projectFile.setBlongType(blongType); if (user.getSubordinateType() == 0) { //上传人为资产方,自动审核通过 projectFile.setState(1); } else if (user.getSubordinateType() == 1) { //上传人为生产方,自动审核通过 projectFile.setState(2); } else { projectFile.setState(0); } File saveFile = new File(dir, fileName); try { saveFile.createNewFile(); file.transferTo(saveFile); } catch (IOException e) { e.printStackTrace(); projectFile = null; } catch (Exception e) { e.printStackTrace(); projectFile = null; } //模具报废情况下,设置files2 if (blongType == 5 && file2 != null && !file2.isEmpty()) { String fileName2 = file2.getOriginalFilename(); projectFile.setFileName2(fileName2); projectFile.setFileSize2(FileUtil.getReadableFileSize(file2.getSize())); System.out.println("上传文件2名称" + file2.getName() + ", dir = " + dir.getAbsolutePath()); pos = fileName2.lastIndexOf("."); rand = UUID.randomUUID().toString().replaceAll("-", ""); sufix = fileName2.substring(pos); fileName2 = rand + sufix; projectFile.setFileType2(sufix);//文件后缀 projectFile.setFileUrl2("/upload/" + fileName2); File saveFile2 = new File(dir, fileName2); try { saveFile2.createNewFile(); file2.transferTo(saveFile2); } catch (IOException e) { e.printStackTrace(); projectFile = null; } catch (Exception e) { e.printStackTrace(); projectFile = null; } } //上传零件文档和上传模具文档的时候需要区分是否为2D或者3D if (userVO.getDwgType() != null) { projectFile.setDwgType(userVO.getDwgType()); } mouldFileMapper.insert(projectFile); //添加上传记录 MouldOperationDynamics dynamics = new MouldOperationDynamics(); dynamics.setContent(Constant.UPLOAD); dynamics.setFileName(file.getOriginalFilename()); dynamics.setOperatorId(user.getId()); dynamics.setFileId(projectFile.getId()); dynamics.setOperatorName(user.getUsername()); dynamics.setMouldId(userVO.getMouldId()); dynamics.setBelongType(blongType); mouldOperationDynamicsMapper.insert(dynamics); } msg.data = projectFile; } } else { msg.setError("当前用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg check(Integer mouldFileId, Integer isPass, UserVO userVO) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); MouldFile mf = new MouldFile(); mf.setId(mouldFileId); MouldFile oldData = mouldFileMapper.selectById(mouldFileId); if (user != null) { if (user.getSubordinateType() == 0) { //资产方 if (isPass == 1) { if (oldData.getState() == 2) {//生产方也审核通过了 mf.setState(3); } else { mf.setState(1); } } else { mf.setState(-1); } mouldFileMapper.updateById(mf); } else if (user.getSubordinateType() == 1) { //生产方 if (isPass == 1) { if (oldData.getState() == 1) {//资产方也审核通过了 mf.setState(3); } else { mf.setState(2); } } else { mf.setState(-2); } mouldFileMapper.updateById(mf); } else { msg.setError("只有生产方和资产方才能审核, subordinteType = " + user.getSubordinateType() + ", 无效!"); } } return msg; } @Override public HttpRespMsg dowloadFile(MouldFile projectFile, String token) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token)); //添加上传记录 MouldFile file = mouldFileMapper.selectById(projectFile.getId()); MouldOperationDynamics dynamics = new MouldOperationDynamics(); dynamics.setContent(Constant.DOWNLOAD); dynamics.setFileName(file.getFileName()); dynamics.setOperatorId(user.getId()); dynamics.setOperatorName(user.getUsername()); dynamics.setMouldId(file.getModelId()); dynamics.setFileId(file.getId()); dynamics.setBelongType(file.getBlongType()); mouldOperationDynamicsMapper.insert(dynamics); return msg; } @Override public HttpRespMsg getAllFileList(int mouldId, UserVO userVO) { List dataList = new ArrayList(); int maxBlongType = 5; for (int i = 0; i <= maxBlongType; i++) { HashMap data = new HashMap<>(); data.put("blongType", i); List list = mouldFileMapper.selectList(new QueryWrapper().eq("model_id", mouldId).eq("blong_type", i).orderByDesc("id")); data.put("list", list); dataList.add(data); } HttpRespMsg msg = new HttpRespMsg(); msg.data = dataList; return msg; } @Override public HttpRespMsg getFileList(int mouldId, Integer blongType, UserVO userVO) { HttpRespMsg msg = new HttpRespMsg(); User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); List list = mouldFileMapper.selectList(new QueryWrapper().eq("model_id", mouldId).eq("blong_type", blongType).orderByDesc("id")); msg.data = list; return msg; } @Override public HttpRespMsg delFile(MouldFile mouldFile) { HttpRespMsg msg = new HttpRespMsg(); msg.data = mouldFileMapper.deleteById(mouldFile.getId()); return msg; } @Override public HttpRespMsg getListByUserAndProjectId(UserVO userVO, PageUtil page) { HttpRespMsg msg = new HttpRespMsg(); User currentUser = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken())); if (currentUser != null) { PageHelper.startPage(page.getPageNum(), page.getPageSize()); List list = mouldFileMapper.getFileListByProjectId(userVO); PageInfo pageInfos = new PageInfo<>(list); msg.data = pageInfos; } else { msg.setError("用户不存在或者未登录"); } return msg; } @Override public HttpRespMsg dowloadFileList(UserVO userVO) { byte[] buffer = new byte[1024]; Date date=new Date(); ////生成zip文件存放位置 // String strZipPath = Constant.exportAddress +loginname+date.getTime()+".zip"; // File file=new File(Constant.exportAddress); // if(!file.isDirectory() && !file.exists()){ ////创建单层目录 //// f.mkdir(); //// 创建多层目录 // file.mkdirs(); // } // try { // ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath)); //// 需要同时下载的多个文件 // for (int i = 0; i < filepath.length; i++) { // File f=new File(filepath[i]); // FileInputStream fis = new FileInputStream(f); // System.out.println(documentname[i]); // out.putNextEntry(new ZipEntry(documentname[i])); ////设置压缩文件内的字符编码,不然会变成乱码 // out.setEncoding("GBK"); // int len; //// 读入需要下载的文件的内容,打包到zip文件 // while ((len = fis.read(buffer)) > 0) { // out.write(buffer, 0, len); // } // out.closeEntry(); // fis.close(); // } // out.close(); // PublicMethod.downLoadFile(request, response, strZipPath, filename+".zip"); // File temp=new File(strZipPath); // if(temp.exists()){ // temp.delete(); // } // } catch (Exception e) { // System.out.println("文件下载错误"); // } return null; } }