危化品全生命周期管理后端
“djh”
2025-07-29 48de12e1635b99d593048398af45d186c8f39234
危化品简化版修改
已修改5个文件
已添加1个文件
95 ■■■■■ 文件已修改
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/dto/HazmatUseStatisticDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hazmat-admin/src/main/java/com/gkhy/hazmat/admin/controller/web/HzStatisticController.java
@@ -3,6 +3,7 @@
import com.gkhy.hazmat.common.annotation.Anonymous;
import com.gkhy.hazmat.common.api.CommonResult;
import com.gkhy.hazmat.system.domain.dto.HazmatUseStatisticDTO;
import com.gkhy.hazmat.system.service.HzStatisticService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -94,14 +95,11 @@
    @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"),
            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "long", required = false, value = "企业id")
            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10")
    })
    @GetMapping("/hazmatUseStatistic")
    public CommonResult hazmatUseStatistic(String startTime,String endTime,Long companyId) {
        return CommonResult.success(statisticService.useStatic(startTime,endTime,companyId));
    public CommonResult hazmatUseStatistic(HazmatUseStatisticDTO useStatisticDTO) {
        return CommonResult.success(statisticService.useStatic(useStatisticDTO));
    }
    @ApiOperation(value = "危化品使用记录导出")
hazmat-system/src/main/java/com/gkhy/hazmat/system/domain/dto/HazmatUseStatisticDTO.java
对比新文件
@@ -0,0 +1,14 @@
package com.gkhy.hazmat.system.domain.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class HazmatUseStatisticDTO implements Serializable {
    private String startTime;
    private String endTime;
    private Long companyId;
    private Long userId;
    private Long departId;
}
hazmat-system/src/main/java/com/gkhy/hazmat/system/mapper/HzHazmatMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gkhy.hazmat.system.domain.HzHazmat;
import com.gkhy.hazmat.system.domain.dto.HazmatUseStatisticDTO;
import com.gkhy.hazmat.system.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -96,12 +97,10 @@
    /**
     * 危化品完全用完数量
     * @param startTime
     * @param endTime
     * @param companyId
     * @param useStatisticDTO
     * @return
     */
    List<HzHazmatUseVO> useCountStatic(@Param("startTime")String startTime,@Param("endTime") String endTime,@Param("companyId") Long companyId);
    List<HzHazmatUseVO> useCountStatic(HazmatUseStatisticDTO useStatisticDTO);
    List<HzEntryRecordVO> useCountHourlyStatic(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("companyId") Long companyId);
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/HzStatisticService.java
@@ -2,6 +2,7 @@
import com.gkhy.hazmat.common.api.CommonPage;
import com.gkhy.hazmat.system.domain.dto.HazmatUseStatisticDTO;
import com.gkhy.hazmat.system.domain.vo.HzCompanyMessage;
import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO;
import com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO;
@@ -45,7 +46,7 @@
     * @param endTime
     * @return
     */
    CommonPage useStatic(String startTime, String endTime,Long companyId);
    CommonPage useStatic(HazmatUseStatisticDTO useStatisticDTO);
    void importBaiscUse(HttpServletResponse response, String startTime, String endTime) throws IOException;
hazmat-system/src/main/java/com/gkhy/hazmat/system/service/impl/HzStatisticServiceImpl.java
@@ -19,6 +19,7 @@
import com.gkhy.hazmat.common.utils.SecurityUtils;
import com.gkhy.hazmat.common.utils.StringUtils;
import com.gkhy.hazmat.system.domain.*;
import com.gkhy.hazmat.system.domain.dto.HazmatUseStatisticDTO;
import com.gkhy.hazmat.system.domain.vo.HzCompanyMessage;
import com.gkhy.hazmat.system.domain.vo.HzEntryRecordVO;
import com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO;
@@ -196,31 +197,31 @@
    @Override
    public CommonPage useStatic(String startTime, String endTime,Long companyId) {
    public CommonPage useStatic(HazmatUseStatisticDTO useStatisticDTO) {
        SysUser currentUser= SecurityUtils.getLoginUser().getUser();
        checkUserAllowed(currentUser);
        String startDate="";
        String endDate="";
        if(StringUtils.isBlank(startTime)&&StringUtils.isBlank(endTime)){
        if(StringUtils.isBlank(useStatisticDTO.getStartTime())&&StringUtils.isBlank(useStatisticDTO.getEndTime())){
            Date currentDate=new Date();
            startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(currentDate), -6)), 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)), -6)), 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)), 6)), DatePattern.NORM_DATETIME_FORMAT);
        } else if (StringUtils.isBlank(useStatisticDTO.getStartTime())&&StringUtils.isNotBlank(useStatisticDTO.getEndTime())) {
            startDate= DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(useStatisticDTO.getEndTime())), -6)), DatePattern.NORM_DATETIME_FORMAT);
            endDate=useStatisticDTO.getEndTime();
        }else if (StringUtils.isNotBlank(useStatisticDTO.getStartTime())&&StringUtils.isBlank(useStatisticDTO.getEndTime())){
            startDate=useStatisticDTO.getStartTime();
            endDate=DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.endOfDay(new Date(useStatisticDTO.getEndTime())), 6)), DatePattern.NORM_DATETIME_FORMAT);
        }else{
            startDate=startTime;
            endDate=endTime;
            if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(startTime), DateUnit.DAY)>90){
            startDate=useStatisticDTO.getStartTime();
            endDate=useStatisticDTO.getEndTime();
            if(DateUtil.between(DateUtil.parse(startDate),DateUtil.parse(useStatisticDTO.getStartTime()), DateUnit.DAY)>90){
                throw new ApiException("只能查询90天以内数据");
            }
        }
        if (currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){
            IdTableNameHandler.setCurrentId(companyId);
            IdTableNameHandler.setCurrentId(useStatisticDTO.getCompanyId());
        }else {
            //设置分表id
@@ -228,7 +229,10 @@
            IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
        }
        PageUtils.startPage();
        List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(startDate, endDate,currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode()) ? companyId:currentUser.getCompanyId());
        if (!currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){
            useStatisticDTO.setCompanyId(currentUser.getCompanyId());
        }
        List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(useStatisticDTO);
        IdTableNameHandler.removeCurrentId();
        if(!hazmatUseVOList.isEmpty()) {
            List<Long> basicIds = hazmatUseVOList.stream().map(HzHazmatUseVO::getBasicId).collect(Collectors.toList());
@@ -273,7 +277,11 @@
            //设置分表id
            IdTableNameHandler.setCurrentId(currentUser.getCompanyId());
//            PageUtils.startPage();
            List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(startDate, endDate,currentUser.getCompanyId());
            HazmatUseStatisticDTO hazmatUseStatisticDTO = new HazmatUseStatisticDTO();
            hazmatUseStatisticDTO.setStartTime(startDate);
            hazmatUseStatisticDTO.setEndTime(endDate);
            hazmatUseStatisticDTO.setCompanyId(currentUser.getCompanyId());
            List<HzHazmatUseVO> hazmatUseVOList= hazmatMapper.useCountStatic(hazmatUseStatisticDTO);
            IdTableNameHandler.removeCurrentId();
            List<HazmatBasicUseExcelData> hazmatBasicUseExcelDatas = new ArrayList<>();
            if(!hazmatUseVOList.isEmpty()) {
hazmat-system/src/main/resources/mapper/system/HzHazmatMapper.xml
@@ -149,13 +149,28 @@
    </select>
    <select id="useCountStatic" resultType="com.gkhy.hazmat.system.domain.vo.HzHazmatUseVO">
        select count(*) as count,basic_id from hz_hazmat
        where create_time &gt;= #{startTime} and create_time &lt;= #{endTime} and state =3
        SELECT
        count(*) AS count,
        hh2.basic_id
        FROM
        hz_hazmat hh2
        LEFT JOIN hz_hazmat_flow hhf2 on hh2.id = hhf2.hazmat_id
        LEFT JOIN sys_user sy on hhf2.create_id =  sy.id
        LEFT JOIN sys_dept sd on sy.depart_id = sd.id
        where hh2.create_time &gt;= #{startTime} and hh2.create_time &lt;= #{endTime} and hh2.state =3 and hhf2.state = 4
        <if test="companyId!=null">
            and company_id=#{companyId}
            and hh2.company_id=#{companyId}
        </if>
        group by basic_id
        order by count desc
        <if test="userId!=null">
            and hh2f.create_id = #{userId}
        </if>
        <if test="departId!=null">
            and sd.id = #{departId}
        </if>
        GROUP BY
        hh2.basic_id
        ORDER BY
        count DESC
    </select>