package org.jeecg.modules.system.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; import org.jeecg.common.api.vo.FileUploadResult; import org.jeecg.common.util.FileUtil; import org.jeecg.common.system.base.entity.SysUpload; import org.jeecg.common.system.base.entity.SysUploadRela; import org.jeecg.modules.system.mapper.UploadMapper; import org.jeecg.modules.system.service.IAliUploadService; import org.jeecg.modules.system.service.IUploadRelaService; import org.jeecg.modules.system.service.IUploadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; @Service public class UploadServiceImpl extends ServiceImpl implements IUploadService { @Autowired private IAliUploadService aliUploadService; @Autowired private IUploadRelaService uploadRelaService; // 由application.yml中获取文件上传方式:本地(local)、阿里云(alioss) @Value(value = "${jeecg.uploadType}") private String uploadType; @Override public IPage page(Page page, Wrapper queryWrapper) { IPage pageList = super.page(page, queryWrapper); List uploadRelaStrList; List uploadRelaList; String uploadRelaStr = ""; for (SysUpload upload : pageList.getRecords()) { uploadRelaList = uploadRelaService.listByUploadId(upload.getId()); upload.setUploadRelaCount(uploadRelaList.size()); uploadRelaStrList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(uploadRelaList)) { for (SysUploadRela uploadRela : uploadRelaList) { // if (uploadRela.getBusType().equals("part_route_file")) {// 产品工艺-文件 // PartRouteFile partRouteFile = partRouteFileService.getById(uploadRela.getBusId()); // if (partRouteFile != null) { // PartRoute partRoute = partRouteService.getById(partRouteFile.getPartRouteId()); // Part part = partService.getById(partRoute.getPartId()); // Route route = routeService.getById(partRoute.getRouteId()); // uploadRelaStr = "产品工艺-文件:产品(" + part.getNum() + "/" + part.getName() + "/" + part.getModel() // + ")"; // uploadRelaStr += "工艺(" + route.getNum() + "/" + route.getDescription() + ")"; // } else { // uploadRelaStr = "产品工艺-文件:有误"; // } //// uploadRelaStr = partRouteFile != null ? "产品工艺-文件:" + partRouteFile.getName() : "产品工艺-文件:有误"; // // } else if (uploadRela.getBusType().equals("part_route_cnc")) {// 产品工艺-CNC程序 // PartRouteFile partRouteFile = partRouteFileService.getById(uploadRela.getBusId()); // if (partRouteFile != null) { // PartRoute partRoute = partRouteService.getById(partRouteFile.getPartRouteId()); // Part part = partService.getById(partRoute.getPartId()); // Route route = routeService.getById(partRoute.getRouteId()); // uploadRelaStr = "产品工艺-CNC程序:产品(" + part.getNum() + "/" + part.getName() + "/" // + part.getModel() + ")"; // uploadRelaStr += "工艺(" + route.getNum() + "/" + route.getDescription() + ")"; // } else { // uploadRelaStr = "产品工艺-CNC程序:有误"; // } //// uploadRelaStr = partRouteFile != null ? "产品工艺-CNC程序:" + partRouteFile.getName(): "产品工艺-CNC程序:有误"; // } else if (uploadRela.getBusType().equals("order")) {// 订单管理-订单 // // Order salesOrder = salesOrderService.getById(uploadRela.getBusId()); // // if (salesOrder != null) { // // Client client = clientService.getById(salesOrder.getClientId()); // // uploadRelaStr = "订单管理:订单编号(" + salesOrder.getNum() + ")"; // // uploadRelaStr += "客户名称(" + client.getNum() + ")"; // // } else { // // uploadRelaStr = "订单管理:有误"; // // } //// uploadRelaStr = salesOrder != null ? "订单管理:订单" + salesOrder.getNum() : "订单管理:有误"; } uploadRelaStrList.add(uploadRelaStr); } upload.setUploadRelaStrList(uploadRelaStrList); } return pageList; } @Override public List batchUploadFile(String type, List files, String description) throws Exception { List uploadList = new ArrayList<>(); for (MultipartFile file : files) { SysUpload upload = new SysUpload(); upload.setDescription(description); upload.setType(type); upload.setName(file.getOriginalFilename()); upload.setSize(String.valueOf(file.getSize())); upload.setFormat(FileUtil.getFileSuffix(file.getOriginalFilename())); upload.setUploadType(uploadType); if ("alioss".equals(uploadType)) { String path = aliUploadService.uploadFile(file); upload.setPath(path); } else if ("local".equals(uploadType)) { FileUploadResult result = FileUtil.uploadFile(file); upload.setPath(result.getFilePath()); upload.setEncodeName(result.getFileEncodeName()); } super.save(upload); uploadList.add(upload); } return uploadList; } @Override public boolean downloadFile(HttpServletResponse response, SysUpload upload) { if ("alioss".equals(uploadType)) { aliUploadService.downloadFile(response, upload.getPath(), upload.getName()); } else if ("local".equals(uploadType)) { FileUtil.downLoadFile(response, upload.getEncodeName(), upload.getPath(), upload.getName()); } return true; } }