From ab2050c3493afa22619e5bb9c0bfb7b48990f96c Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 17 二月 2025 15:18:38 +0800
Subject: [PATCH] 111
---
server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java | 178 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 134 insertions(+), 44 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 3943d3a..7dc07a0 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,20 +1,49 @@
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.google.common.collect.Lists;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.Constants;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
+import com.doumee.core.wx.WxMiniUtilService;
import com.doumee.dao.business.LocksMapper;
+import com.doumee.dao.business.join.LocksJoinMapper;
+import com.doumee.dao.business.model.BaseParam;
+import com.doumee.dao.business.model.Bikes;
import com.doumee.dao.business.model.Locks;
+import com.doumee.dao.business.model.Sites;
+import com.doumee.dao.system.model.SystemDictData;
import com.doumee.service.business.LocksService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.SitesService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+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;
+import java.util.stream.Collectors;
/**
* 閿佸ご淇℃伅琛⊿ervice瀹炵幇
@@ -26,6 +55,17 @@
@Autowired
private LocksMapper locksMapper;
+
+ @Autowired
+ private LocksJoinMapper locksJoinMapper;
+
+
+ @Autowired
+ private WxMiniUtilService wxMiniUtilService;
+
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
@Override
public String create(Locks locks) {
@@ -75,7 +115,7 @@
@Override
public Locks findOne(Locks locks) {
QueryWrapper<Locks> wrapper = new QueryWrapper<>(locks);
- return locksMapper.selectOne(wrapper);
+ return locksMapper.selectOne(wrapper.last(" limit 1"));
}
@Override
@@ -83,58 +123,59 @@
QueryWrapper<Locks> wrapper = new QueryWrapper<>(locks);
return locksMapper.selectList(wrapper);
}
-
+
+ @Override
+ public List<Locks> findLockBase64List(Locks locks) {
+ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ String fullPath = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode() +
+ systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode() ;
+
+ QueryWrapper<Locks> wrapper = new QueryWrapper<>(locks);
+ wrapper.lambda().orderByAsc(Locks::getCode);
+ List<Locks> locksList = locksMapper.selectList(wrapper);
+ SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.ACCESS_TOKEN);
+ String code = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode();
+ String prePath = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.IMG_DIR).getCode();
+ if (!CollectionUtils.isEmpty(locksList)){
+ // 妫�鏌ユ槸鍚︽湁鍥剧墖淇℃伅娌℃湁鏇存柊淇濆瓨鍥剧墖
+ locksList.forEach(s-> {
+ if (StringUtils.isBlank(s.getInfo())){
+ wxMiniUtilService.generateWXMiniCode(s,systemDictData,prePath,code);
+ s.setEditor(loginUserInfo.getId());
+ s.setEditDate(new Date());
+ updateById(s);
+ }
+ s.setImgfullurl(fullPath+s.getInfo());
+ });
+ return locksList;
+ }
+ return new ArrayList<>();
+ }
+
+
@Override
public PageData<Locks> findPage(PageWrap<Locks> pageWrap) {
IPage<Locks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<Locks> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<Locks> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
- if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(Locks::getId, pageWrap.getModel().getId());
- }
- if (pageWrap.getModel().getCreateDate() != null) {
- queryWrapper.lambda().ge(Locks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
- queryWrapper.lambda().le(Locks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
- }
- if (pageWrap.getModel().getCreator() != null) {
- queryWrapper.lambda().eq(Locks::getCreator, pageWrap.getModel().getCreator());
- }
- if (pageWrap.getModel().getEditDate() != null) {
- queryWrapper.lambda().ge(Locks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
- queryWrapper.lambda().le(Locks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
- }
- if (pageWrap.getModel().getEditor() != null) {
- queryWrapper.lambda().eq(Locks::getEditor, pageWrap.getModel().getEditor());
- }
- if (pageWrap.getModel().getIsdeleted() != null) {
- queryWrapper.lambda().eq(Locks::getIsdeleted, pageWrap.getModel().getIsdeleted());
- }
- if (pageWrap.getModel().getInfo() != null) {
- queryWrapper.lambda().eq(Locks::getInfo, pageWrap.getModel().getInfo());
- }
- if (pageWrap.getModel().getName() != null) {
- queryWrapper.lambda().eq(Locks::getName, pageWrap.getModel().getName());
- }
+
if (pageWrap.getModel().getCode() != null) {
- queryWrapper.lambda().eq(Locks::getCode, pageWrap.getModel().getCode());
- }
- if (pageWrap.getModel().getStatus() != null) {
- queryWrapper.lambda().eq(Locks::getStatus, pageWrap.getModel().getStatus());
+ queryWrapper.like(Locks::getCode, pageWrap.getModel().getCode());
}
if (pageWrap.getModel().getSiteId() != null) {
- queryWrapper.lambda().eq(Locks::getSiteId, pageWrap.getModel().getSiteId());
+ queryWrapper.like(Locks::getSiteId, pageWrap.getModel().getSiteId());
}
- if (pageWrap.getModel().getBikeCode() != null) {
- queryWrapper.lambda().eq(Locks::getBikeCode, pageWrap.getModel().getBikeCode());
+ if (pageWrap.getModel().getSiteName() != null) {
+ queryWrapper.like(Sites::getName, pageWrap.getModel().getSiteName());
}
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
- }
- }
- return PageData.from(locksMapper.selectPage(page, queryWrapper));
+ queryWrapper.leftJoin(Bikes.class,Bikes::getCode,Locks::getBikeCode)
+ .leftJoin(BaseParam.class,BaseParam::getId,Bikes::getParamId)
+ .leftJoin(Sites.class,Sites::getCode,Locks::getSiteId);
+ queryWrapper.orderByDesc(Locks::getBikeCode);
+ queryWrapper.selectAll(Locks.class)
+ .selectAs(Sites::getName,Locks::getSiteName)
+ .selectAs(BaseParam::getName,Locks::getBikeType);
+ return PageData.from(locksJoinMapper.selectJoinPage(page, Locks.class,queryWrapper));
}
@Override
@@ -142,4 +183,53 @@
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);
+ }
+ }
+
+
}
--
Gitblit v1.9.3