From 47eaf795268542576d58e5bcde6daed95c0a1161 Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: 星期二, 04 三月 2025 10:41:12 +0800
Subject: [PATCH] 用量统计页面及导出
---
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java | 98 ++++++++++++++++++++++++++++++++
hazmat-common/src/main/java/com/gkhy/hazmat/common/excel/HazmatBasicUseExcelData.java | 41 +++++++++++++
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java | 4 +
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java | 15 +++++
4 files changed, 157 insertions(+), 1 deletions(-)
diff --git a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java
index fd867a5..de8b68e 100644
--- a/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java
+++ b/hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java
@@ -12,6 +12,9 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
/**
* <p>
* 统计前端控制器
@@ -65,4 +68,16 @@
return CommonResult.success(statisticService.useStatic(startTime,endTime));
}
+ @ApiOperation(value = "危化品使用记录导出")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+ @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"),
+ @ApiImplicitParam(paramType = "query", name = "startTime", dataType = "string", required = false, value = "开始时间,格式xxxx-xx-xx 00:00:00"),
+ @ApiImplicitParam(paramType = "query", name = "endTime", dataType = "string", required = false, value = "结束时间,格式xxxx-xx-xx 23:59:59")
+ })
+ @GetMapping("/importBaiscUse")
+ public void ImportBasicUse(HttpServletResponse response, String startTime, String endTime) throws IOException {
+ statisticService.importBaiscUse(response,startTime,endTime);
+ }
+
}
diff --git a/hazmat-common/src/main/java/com/gkhy/hazmat/common/excel/HazmatBasicUseExcelData.java b/hazmat-common/src/main/java/com/gkhy/hazmat/common/excel/HazmatBasicUseExcelData.java
new file mode 100644
index 0000000..c759d41
--- /dev/null
+++ b/hazmat-common/src/main/java/com/gkhy/hazmat/common/excel/HazmatBasicUseExcelData.java
@@ -0,0 +1,41 @@
+package com.gkhy.hazmat.common.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+public class HazmatBasicUseExcelData {
+ @ExcelProperty("序号")
+ private Integer index;
+
+ @ExcelProperty("名称")
+ private String name;
+
+ @ExcelProperty("CAS")
+ private String cas;
+
+ @ExcelProperty("试剂类型")
+ private String productType;
+
+ @ExcelProperty("危险性质")
+ private String productCharacter;
+
+ @ExcelProperty("供应商")
+ private String supplier;
+
+ @ExcelProperty("规格")
+ private String productFormat;
+
+ @ExcelProperty("最小包装类型")
+ private String minPackage;
+
+ @ExcelProperty("用量")
+ private Integer count;
+
+
+}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java
index b967829..d63c27c 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java
@@ -6,6 +6,8 @@
import com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO;
import com.gkhy.hazmat.system.domain.vo.HzHomeDataVO;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.util.List;
/**
@@ -43,4 +45,6 @@
* @return
*/
CommonPage useStatic(String startTime, String endTime);
+
+ void importBaiscUse(HttpServletResponse response, String startTime, String endTime) throws IOException;
}
diff --git a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java
index 879787f..109ba5f 100644
--- a/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java
+++ b/hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java
@@ -4,12 +4,16 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.support.ExcelTypeEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.gkhy.hazmat.common.api.CommonPage;
import com.gkhy.hazmat.common.config.IdTableNameHandler;
import com.gkhy.hazmat.common.domain.entity.SysUser;
+import com.gkhy.hazmat.common.enums.HazmatPackageEnum;
import com.gkhy.hazmat.common.enums.HazmatStatusEnum;
import com.gkhy.hazmat.common.enums.UserTypeEnum;
+import com.gkhy.hazmat.common.excel.HazmatBasicUseExcelData;
import com.gkhy.hazmat.common.exception.ApiException;
import com.gkhy.hazmat.common.utils.PageUtils;
import com.gkhy.hazmat.common.utils.SecurityUtils;
@@ -20,9 +24,16 @@
import com.gkhy.hazmat.system.domain.vo.HzHomeDataVO;
import com.gkhy.hazmat.system.mapper.*;
import com.gkhy.hazmat.system.service.HzStatisticService;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
@@ -186,7 +197,7 @@
}else{
startDate=startTime;
endDate=endTime;
- if(DateUtil.between(new Date(endDate),new Date(startTime), DateUnit.DAY)>90){
+ if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(startTime), DateUnit.DAY)>90){
throw new ApiException("只能查询90天以内数据");
}
}
@@ -210,6 +221,91 @@
return CommonPage.restPage(hazmatUseVOList);
}
+ @Override
+ public void importBaiscUse(HttpServletResponse response, String startTime, String endTime) throws IOException {
+ SysUser currentUser= SecurityUtils.getLoginUser().getUser();
+ checkUserAllowed(currentUser);
+ OutputStream outputStream = response.getOutputStream();
+ try {
+ String startDate="";
+ String endDate="";
+ if(StringUtils.isBlank(startTime)&&StringUtils.isBlank(endTime)){
+ Date currentDate=new Date();
+ startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(currentDate), -29)), DatePattern.NORM_DATETIME_FORMAT);
+ endDate=DateUtil.format(DateUtil.endOfDay(currentDate),DatePattern.NORM_DATETIME_FORMAT);
+ } else if (StringUtils.isBlank(startTime)&&StringUtils.isNotBlank(endTime)) {
+ startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(endTime)), -29)), DatePattern.NORM_DATETIME_FORMAT);
+ endDate=endTime;
+ }else if (StringUtils.isNotBlank(startTime)&&StringUtils.isBlank(endTime)){
+ startDate=startTime;
+ endDate=DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(endTime)), 29)), DatePattern.NORM_DATETIME_FORMAT);
+ }else{
+ startDate=startTime;
+ endDate=endTime;
+ if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(startTime), DateUnit.DAY)>90){
+ throw new ApiException("只能查询90天以内数据");
+ }
+ }
+ //设置分表id
+ IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
+ PageUtils.startPage();
+ List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(startDate, endDate,currentUser.getCompanyId());
+ IdTableNameHandler.removeCurrentId();
+ List<HazmatBasicUseExcelData> hazmatBasicUseExcelDatas = new ArrayList<>();
+ if(!hazmatUseVOList.isEmpty()) {
+ List<Long> basicIds = hazmatUseVOList.stream().map(HzHazmatUseVO::getBasicId).collect(Collectors.toList());
+ List<HzHazmatBasic> hzHazmatBasicList = hazmatBasicMapper.selectHazmatBasicListByIds(basicIds);
+ Map<Long, HzHazmatBasic> hazmatBasicMap = hzHazmatBasicList.stream().collect(Collectors.toMap(HzHazmatBasic::getId, item -> item));
+ Integer index=1;
+ for (HzHazmatUseVO hu : hazmatUseVOList) {
+ HazmatBasicUseExcelData hazmatBasicUseExcelData = new HazmatBasicUseExcelData();
+ hazmatBasicUseExcelData.setCount(hu.getCount());
+ HzHazmatBasic hazmatBasic = hazmatBasicMap.get(hu.getBasicId());
+ if (hazmatBasic != null) {
+ BeanUtils.copyProperties(hazmatBasic,hazmatBasicUseExcelData);
+ hazmatBasicUseExcelData.setIndex(index);
+ hazmatBasicUseExcelData.setProductType(hazmatBasic.getHazmatType());
+ hazmatBasicUseExcelData.setProductCharacter(hazmatBasic.getHazmatCharacter());
+ hazmatBasicUseExcelData.setProductFormat(hazmatBasic.getHazmatFormat());
+ hazmatBasicUseExcelData.setMinPackage(HazmatPackageEnum.getInfoByCode(hazmatBasic.getMinPackage()));
+ }
+ index++;
+ hazmatBasicUseExcelDatas.add(hazmatBasicUseExcelData);
+ }
+ }
+ Date date = new Date();
+ long time = date.getTime();
+ String fileName = "危化品用量统计_"+time;
+ this.setExcelResponseProp(response,fileName);
+
+ //使用 EasyExcel 导出数据
+ EasyExcel.write(response.getOutputStream(), HazmatBasicUseExcelData.class)
+ .excelType(ExcelTypeEnum.XLSX)
+ .sheet("危化品使用记录统计表") // 设置 Sheet 名称
+ .doWrite(hazmatBasicUseExcelDatas); // 写入数据
+
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }finally {
+ outputStream.flush();
+ outputStream.close();
+ }
+
+
+
+ }
+
+ private void setExcelResponseProp(HttpServletResponse response, String rawFileName) throws UnsupportedEncodingException {
+ //设置内容类型
+ response.setContentType("application/vnd.vnd.ms-excel");
+ //设置编码格式
+ response.setCharacterEncoding("utf-8");
+ //设置导出文件名称(避免乱码)
+ String fileName = URLEncoder.encode(rawFileName.concat(".xlsx"), "UTF-8");
+ // 设置响应头
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName);
+ }
+
public void checkUserAllowed(SysUser user) {
if (user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
throw new ApiException("管理员不能操作");
--
Gitblit v1.9.2