doum
3 天以前 bc09bc87234065abe7130b84c92f81f143f5f3e7
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java
@@ -1,20 +1,21 @@
package com.doumee.service.business.impl;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.LoginUserModel;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.PlatformGasImport;
import com.doumee.dao.business.PlatformWaterGasMapper;
import com.doumee.dao.business.model.PlatformReason;
import com.doumee.dao.business.model.PlatformWaterGas;
import com.doumee.dao.openapi.request.GasByMonthRequest;
import com.doumee.dao.openapi.request.WaterByMonthRequest;
import com.doumee.dao.openapi.response.GasByMonthResponse;
import com.doumee.dao.openapi.response.PlatformLastMonthListResponse;
import com.doumee.dao.openapi.response.WaterByMonthResponse;
import com.doumee.service.business.PlatformWaterGasService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -22,17 +23,15 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
 * 月台_用水用气信息记录表Service实现
@@ -118,6 +117,7 @@
                .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO)
                .ne(PlatformWaterGas::getId,platformWaterGas.getId())
                .apply("to_days(time_info) = to_days('"+ DateUtil.getPlusTime2(platformWaterGas.getTimeInfo()) +"')")
                .eq(PlatformWaterGas::getType, platformWaterGas.getType())
                .eq(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO),PlatformWaterGas::getCarCode,platformWaterGas.getCarCode()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
        }
@@ -244,7 +244,7 @@
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
                .eq(PlatformWaterGas::getType,Constants.ZERO)
                .like(PlatformWaterGas::getTimeInfo,beforMonth)
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM"))
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
            waterByMonthResponse.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -253,7 +253,7 @@
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
                .eq(PlatformWaterGas::getType,Constants.ZERO)
                .like(PlatformWaterGas::getTimeInfo,beforYearMonth)
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM"))
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
            waterByMonthResponse.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -287,7 +287,7 @@
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
                .eq(PlatformWaterGas::getType,Constants.ONE)
                .like(PlatformWaterGas::getTimeInfo,beforMonth)
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforMonth,"yyyy-MM"))
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
            response.setLastMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -296,7 +296,7 @@
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
                .eq(PlatformWaterGas::getType,Constants.ONE)
                .like(PlatformWaterGas::getTimeInfo,beforYearMonth)
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(beforYearMonth,"yyyy-MM"))
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
            response.setLastYearMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -304,4 +304,95 @@
        return response;
    }
    /**
     *
     * @param type 0用水 1用气
     * @return
     */
    @Override
    public List<PlatformLastMonthListResponse> getPlatformLastMonthListResponse(Integer type){
        List<PlatformLastMonthListResponse> lastMonthListResponses = new ArrayList<>();
        List<PlatformWaterGas> platformWaterGasList = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda()
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO)
                .eq(PlatformWaterGas::getType,type)
        );
        List<String> monthList = DateUtil.getBeforMonth(new Date(),12);
        for (String str:monthList) {
            PlatformLastMonthListResponse platformLastMonthListResponse = new PlatformLastMonthListResponse();
            platformLastMonthListResponse.setNum(platformWaterGasList.stream().filter(i->DateUtil.dateToString(i.getTimeInfo(),"yyyy-MM").equals(str)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
            platformLastMonthListResponse.setTimeInfo(str);
            lastMonthListResponses.add(platformLastMonthListResponse);
        }
        return lastMonthListResponses;
    }
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public String importBatch(MultipartFile file, LoginUserInfo loginUserInfo){
        try {
            ExcelImporter ie = null;
            List<PlatformGasImport> dataList =null;
            try {
                ie = new ExcelImporter(file,1,0);
                dataList = ie.getDataList(PlatformGasImport.class,null);
            }  catch (Exception e) {
                e.printStackTrace();
            }
            if(dataList == null || dataList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!");
            }
            List<PlatformWaterGas> newList = new ArrayList<>();
            for(int i=0;i<dataList.size();i++){
                PlatformGasImport model = dataList.get(i);
                if(Objects.isNull(model.getTimeInfo())
                || StringUtils.isBlank(model.getCarCode())
                || StringUtils.isBlank(model.getNum()) ){
                    throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+i+2+"行数据参数错误!");
                }
                PlatformWaterGas platformWaterGas = new PlatformWaterGas();
                try {
                    BigDecimal num = new BigDecimal(model.getNum());
                    platformWaterGas.setNum(num);
                }catch (Exception e){
                    throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+i+2+"行数量错误!");
                }
                if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda()
                        .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO)
                        .apply("to_days(time_info) = to_days('"+ model.getTimeInfo()+"-01" +"')")
                        .eq(PlatformWaterGas::getType,Constants.TWO)
                        .eq(PlatformWaterGas::getCarCode,model.getCarCode()))>0){
                    throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该["+model.getTimeInfo()+"]数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!");
                }
                platformWaterGas.setTimeInfo(DateUtil.StringToDate(model.getTimeInfo()+"-01","yyyy-MM-dd"));
                platformWaterGas.setCarCode(model.getCarCode());
                platformWaterGas.setIsdeleted(Constants.ZERO);
                platformWaterGas.setType(Constants.TWO);
                platformWaterGas.setCreator(loginUserInfo.getId());
                platformWaterGas.setCreateDate(new Date());
                platformWaterGas.setEditDate(platformWaterGas.getCreateDate());
                platformWaterGas.setEditor(platformWaterGas.getCreator());
                newList.add(platformWaterGas);
            }
            if(newList == null || newList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入有效数据为空!");
            }
            platformWaterGasMapper.insert(newList);
            return "导入成功";
        }catch (BusinessException e){
            throw e;
        }catch (Exception e){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"信息导入失败,请稍后重试");
        }finally {
            redisTemplate.delete(Constants.RedisKeys.IMPORTING_MEMBER);
        }
    }
}