From 76040353dd0e8826119a036233bf5b3ea405246e Mon Sep 17 00:00:00 2001 From: Yangzz <9704.yyds@163.com> Date: Mon, 30 Jun 2025 14:24:55 +0800 Subject: [PATCH] =?UTF-8?q?Site=E5=8A=9F=E8=83=BD=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../factory/controller/SiteController.java | 17 +++++- .../modules/factory/service/SiteService.java | 15 ++++- .../factory/service/impl/SiteServiceImpl.java | 55 ++++++++++++++++++- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gaotao/modules/factory/controller/SiteController.java b/src/main/java/com/gaotao/modules/factory/controller/SiteController.java index 2371ab5..e538754 100644 --- a/src/main/java/com/gaotao/modules/factory/controller/SiteController.java +++ b/src/main/java/com/gaotao/modules/factory/controller/SiteController.java @@ -4,12 +4,12 @@ package com.gaotao.modules.factory.controller; import com.gaotao.common.constant.SysMsgConstant; import com.gaotao.common.utils.R; import com.gaotao.modules.factory.entity.Site; -import com.gaotao.modules.factory.entity.vo.SiteVo; import com.gaotao.modules.factory.service.SiteService; import com.gaotao.modules.sys.controller.AbstractController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import java.util.List; @RequestMapping("/site") @@ -60,4 +60,19 @@ public class SiteController extends AbstractController { Site site = service.getSiteById(id); return R.ok().put("row",site); } + + /* + * @Description site导出 + * @Title + * @param null + * @author Yangzz + * @date 2025/6/30 09:37 + * @return {@link null} + * @throw + */ + + @PostMapping("/export") + public void export(HttpServletResponse response, @RequestBody Site site) { + service.export(response,site); + } } diff --git a/src/main/java/com/gaotao/modules/factory/service/SiteService.java b/src/main/java/com/gaotao/modules/factory/service/SiteService.java index 36d0e36..26398a9 100644 --- a/src/main/java/com/gaotao/modules/factory/service/SiteService.java +++ b/src/main/java/com/gaotao/modules/factory/service/SiteService.java @@ -2,8 +2,8 @@ package com.gaotao.modules.factory.service; import com.baomidou.mybatisplus.extension.service.IService; import com.gaotao.modules.factory.entity.Site; -import com.gaotao.modules.factory.entity.vo.SiteVo; +import javax.servlet.http.HttpServletResponse; import java.util.List; public interface SiteService extends IService { @@ -27,4 +27,17 @@ public interface SiteService extends IService { String generateSiteId(Site site); Site getSiteById(String id); + + /* + * @Description site导出 + * @Title + * @param null + * @author Yangzz + * @date 2025/6/30 09:38 + * @return {@link null} + * @throw + */ + + void export(HttpServletResponse response, Site site); + } diff --git a/src/main/java/com/gaotao/modules/factory/service/impl/SiteServiceImpl.java b/src/main/java/com/gaotao/modules/factory/service/impl/SiteServiceImpl.java index afbb91a..9121367 100644 --- a/src/main/java/com/gaotao/modules/factory/service/impl/SiteServiceImpl.java +++ b/src/main/java/com/gaotao/modules/factory/service/impl/SiteServiceImpl.java @@ -1,18 +1,22 @@ package com.gaotao.modules.factory.service.impl; +import cn.idev.excel.FastExcel; +import cn.idev.excel.write.metadata.style.WriteCellStyle; +import cn.idev.excel.write.metadata.style.WriteFont; +import cn.idev.excel.write.style.HorizontalCellStyleStrategy; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; import com.gaotao.common.constant.SysMsgConstant; -import com.gaotao.common.utils.WrapperGenerate; +import com.gaotao.common.utils.R; import com.gaotao.modules.factory.dao.SiteMapper; import com.gaotao.modules.factory.entity.Site; -import com.gaotao.modules.factory.entity.vo.SiteVo; import com.gaotao.modules.factory.service.SiteService; import com.gaotao.modules.label.entity.LabelFormat; import com.gaotao.modules.label.service.LabelFormatService; +import com.gaotao.modules.pallet.entity.CatchPallet; import com.gaotao.modules.part.entity.Part; import com.gaotao.modules.part.service.PartService; import com.gaotao.modules.sys.entity.SysUserEntity; -import com.gaotao.modules.sys.service.SysMenuService; import com.gaotao.modules.sys.service.SysMsgService; import com.gaotao.modules.sys.service.SysUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -20,6 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Date; import java.util.List; import java.util.Objects; @@ -93,4 +100,46 @@ public class SiteServiceImpl extends ServiceImpl implements Si public Site getSiteById(String id) { return lambdaQuery().eq(Site::getSiteId, id).one(); } + + @Override + public void export(HttpServletResponse response, Site site) { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setStatus(200); + List list = baseMapper.selectSiteList(site); + + if (list.isEmpty()) { + // 设置返回类型为 JSON + response.setContentType("application/json;charset=UTF-8"); + response.setStatus(HttpServletResponse.SC_OK); // 仍返回 200,但内容为 R.error + try { + R errorResponse = R.error(500, "not find any Site Data"); + String json = new ObjectMapper().writeValueAsString(errorResponse); + response.getWriter().write(json); + } catch (IOException e) { + throw new RuntimeException(e); + } + return; + } + try { + String fileName = URLEncoder.encode("Site List", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + WriteCellStyle contentCellStyle = new WriteCellStyle(); + WriteFont writeFont = new WriteFont(); + writeFont.setFontName("Arial"); + contentCellStyle.setWriteFont(writeFont); + + // 注册策略 + HorizontalCellStyleStrategy strategy = new HorizontalCellStyleStrategy(null, contentCellStyle); + + + FastExcel.write(response.getOutputStream(), CatchPallet.class) + .registerWriteHandler(strategy) + .sheet("site List") + .doWrite(list); + } catch (Exception e) { + throw new RuntimeException(e); + } + } }