From 4fabfe4dbd2eb28d07a4350597d314958cc1c281 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期四, 09 十月 2025 11:16:43 +0800 Subject: [PATCH] 优化 --- server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 176 insertions(+), 3 deletions(-) diff --git a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java index b4b873a..f789565 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java @@ -1,5 +1,9 @@ package com.doumee.service.business.impl; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; +import com.doumee.core.wx.WxMiniConfig; +import com.doumee.dao.business.BikesMapper; import com.google.common.collect.Lists; import com.doumee.biz.system.SystemDictDataBiz; @@ -22,12 +26,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.SitesService; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import io.swagger.models.auth.In; +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -54,6 +69,8 @@ @Autowired private SystemDictDataBiz systemDictDataBiz; + @Autowired + private BikesMapper bikesMapper; @Override public String create(Locks locks) { @@ -127,8 +144,11 @@ if (!CollectionUtils.isEmpty(locksList)){ // 妫�鏌ユ槸鍚︽湁鍥剧墖淇℃伅娌℃湁鏇存柊淇濆瓨鍥剧墖 locksList.forEach(s-> { - if (StringUtils.isBlank(s.getInfo())){ - wxMiniUtilService.generateWXMiniCode(s,systemDictData,prePath,code); + if (Constants.equalsInteger(locks.getFource(),Constants.ONE) ||StringUtils.isBlank(s.getInfo())){ + try { + wxMiniUtilService.generateWXMiniCode(s, WxMiniConfig.wxMaService.getAccessToken(),prePath,code); + }catch (Exception e){ + } s.setEditor(loginUserInfo.getId()); s.setEditDate(new Date()); updateById(s); @@ -139,6 +159,78 @@ } return new ArrayList<>(); } + + /** + * 鑾峰彇鎵�鏈夌數娴嬪皬绋嬪簭浜岀淮鐮� + * @param force 0涓嶅己鍒跺埛鏂� 1寮哄埗鍒锋柊 + * @return + */ + @Override + public List<Bikes> findAllBikeBase(Integer force) { + List<Bikes> bikesList = bikesMapper.selectList(new QueryWrapper<Bikes>().lambda() + .eq(Bikes::getIsdeleted,Constants.ZERO) + .eq(Bikes::getType,Constants.ONE) + ); + if(bikesList!=null && bikesList.size()>0){ + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + String fullPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode() + + systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode() ; + String code = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); + String prePath = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.IMG_DIR).getCode(); + for(Bikes bikes : bikesList){ + if (Constants.equalsInteger(force,Constants.ONE) || StringUtils.isBlank(bikes.getImgurl())){ + try { + wxMiniUtilService.generateEbikeWXMiniCode(bikes, WxMiniConfig.wxMaService.getAccessToken(),prePath,code); + }catch (Exception e){ + } + if (StringUtils.isNotBlank(bikes.getImgurl())){ + bikes.setEditor(loginUserInfo.getId()); + bikes.setEditDate(new Date()); + bikesMapper.updateById(bikes); + } + } + if (StringUtils.isNotBlank(bikes.getImgurl())){ + bikes.setImgurl(fullPath+bikes.getImgurl()); + } + } + + } + + return bikesList; + } + @Override + public Bikes findBikeBase(String bikeId, Integer force) { + Bikes bikes = bikesMapper.selectById(bikeId); + if(bikes == null + || Constants.equalsInteger(bikes.getIsdeleted(),Constants.ONE) + || !Constants.equalsInteger(bikes.getType(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + String fullPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode() + + systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode() ; + String code = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); + String prePath = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.IMG_DIR).getCode(); + // 妫�鏌ユ槸鍚︽湁鍥剧墖淇℃伅娌℃湁鏇存柊淇濆瓨鍥剧墖 + if (Constants.equalsInteger(force,Constants.ONE) || StringUtils.isBlank(bikes.getImgurl())){ + try { + wxMiniUtilService.generateEbikeWXMiniCode(bikes, WxMiniConfig.wxMaService.getAccessToken(),prePath,code); + }catch (Exception e){ + e.printStackTrace(); + } + if (StringUtils.isNotBlank(bikes.getImgurl())){ + bikes.setEditor(loginUserInfo.getId()); + bikes.setEditDate(new Date()); + bikesMapper.updateById(bikes); + } + } + if (StringUtils.isBlank(bikes.getImgurl())){ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鑾峰彇灏忕▼搴忕爜澶辫触锛岃绋嶅悗閲嶈瘯锛�"); + } + bikes.setImgurl(fullPath+bikes.getImgurl()); + return bikes; + } + @Override public PageData<Locks> findPage(PageWrap<Locks> pageWrap) { @@ -170,6 +262,87 @@ QueryWrapper<Locks> wrapper = new QueryWrapper<>(locks); return locksMapper.selectCount(wrapper); } - + public static void packFilesToZip(List<File> files, ServletOutputStream os) throws IOException { + try (ZipArchiveOutputStream zipOutputStream = new ZipArchiveOutputStream(os)) { + for (File file : files) { + ZipArchiveEntry entry = new ZipArchiveEntry(file.getName()); + zipOutputStream.putArchiveEntry(entry); + try (FileInputStream fileInputStream = new FileInputStream(file)) { + byte[] buffer = new byte[1024]; + int length; + while ((length = fileInputStream.read(buffer)) > 0) { + zipOutputStream.write(buffer, 0, length); + } + } + zipOutputStream.closeArchiveEntry(); + } + } + } + @Override + public void exportImages(String siteId, HttpServletResponse response) { + try { + List<File> fileList = new ArrayList<>(); + List<Locks> locks = locksJoinMapper.selectList(new QueryWrapper<Locks>().lambda().eq(Locks::getSiteId,siteId).isNotNull(Locks::getInfo)); + if(locks== null || locks.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IMG_DIR).getCode()+systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode(); + for(Locks l : locks){ + if(StringUtils.isNotBlank(l.getInfo())){ + File file = new File(path + l.getInfo()); + if(file!=null && file.isFile()){ + fileList.add(file); + } + } + } + if(fileList == null || fileList.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String fileName = "绔欑偣銆�"+siteId+"銆戝皬绋嬪簭鐮佹壒閲忓鍑篲"+System.currentTimeMillis()+".zip" ; + String encodeFileName = URLEncoder.encode(fileName); + response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); + response.setContentType("application/octet-stream"); + response.setHeader("eva-opera-type", "download"); + response.setHeader("eva-download-filename", encodeFileName); + packFilesToZip(fileList,response.getOutputStream()); + } catch (IOException e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } + } + @Override + public void exportEbikeImages(String bikeid, HttpServletResponse response){ + try { + List<File> fileList = new ArrayList<>(); + List<Bikes> bikesList = bikesMapper.selectList(new QueryWrapper<Bikes>().lambda() + .eq(Bikes::getIsdeleted,Constants.ZERO) + .eq(StringUtils.isNotBlank(bikeid) ,Bikes::getId,bikeid) + .eq(Bikes::getType,Constants.ONE) + ); + if(bikesList== null || bikesList.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IMG_DIR).getCode()+systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode(); + for(Bikes l : bikesList){ + if(StringUtils.isNotBlank(l.getImgurl())){ + File file = new File(path + l.getImgurl()); + if(file!=null && file.isFile()){ + fileList.add(file); + } + } + } + if(fileList == null || fileList.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String fileName = "鐢佃溅灏忕▼搴忕爜鎵归噺瀵煎嚭_"+System.currentTimeMillis()+".zip" ; + String encodeFileName = URLEncoder.encode(fileName); + response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); + response.setContentType("application/octet-stream"); + response.setHeader("eva-opera-type", "download"); + response.setHeader("eva-download-filename", encodeFileName); + packFilesToZip(fileList,response.getOutputStream()); + } catch (IOException e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } + } } -- Gitblit v1.9.3