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.doumee.core.model.LoginUserModel; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.DateUtil; 
 | 
import com.doumee.core.utils.Utils; 
 | 
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; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
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.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
import org.springframework.web.bind.annotation.RequestBody; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * 月台_用水用气信息记录表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/08/26 16:22 
 | 
 */ 
 | 
@Service 
 | 
public class PlatformWaterGasServiceImpl implements PlatformWaterGasService { 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformWaterGasMapper platformWaterGasMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(PlatformWaterGas platformWaterGas) { 
 | 
        if(platformWaterGas.getTimeInfo() ==null || platformWaterGas.getNum()==null 
 | 
        ||(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO) && StringUtils.isBlank(platformWaterGas.getCarCode()))){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,参数错误!"); 
 | 
        } 
 | 
        if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO) 
 | 
                .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(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!"); 
 | 
        } 
 | 
        platformWaterGas.setIsdeleted(Constants.ZERO); 
 | 
        platformWaterGas.setType(Constants.formatIntegerNum(platformWaterGas.getType())); 
 | 
        platformWaterGas.setCreator(platformWaterGas.getLoginUserInfo().getId()); 
 | 
        platformWaterGas.setCreateDate(new Date()); 
 | 
        platformWaterGas.setEditDate(platformWaterGas.getCreateDate()); 
 | 
        platformWaterGas.setEditor(platformWaterGas.getCreator()); 
 | 
        platformWaterGasMapper.insert(platformWaterGas); 
 | 
        return platformWaterGas.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
  
 | 
        platformWaterGasMapper.deleteById(id); 
 | 
    } 
 | 
    @Override 
 | 
    public void deleteById(Integer id, LoginUserInfo model) { 
 | 
        PlatformWaterGas param = new PlatformWaterGas(); 
 | 
        param.setId(id); 
 | 
        param.setIsdeleted(Constants.ONE); 
 | 
        param.setEditor(model.getId()); 
 | 
        param.setEditDate(new Date()); 
 | 
        platformWaterGasMapper.updateById(param); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(PlatformWaterGas platformWaterGas) { 
 | 
        UpdateWrapper<PlatformWaterGas> deleteWrapper = new UpdateWrapper<>(platformWaterGas); 
 | 
        platformWaterGasMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        platformWaterGasMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo model) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        for(Integer id : ids){ 
 | 
            deleteById(id,model); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(PlatformWaterGas platformWaterGas) { 
 | 
        if(platformWaterGas.getTimeInfo() ==null 
 | 
                || platformWaterGas.getId()==null 
 | 
                || platformWaterGas.getNum()==null 
 | 
                ||(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO) && StringUtils.isBlank(platformWaterGas.getCarCode()))){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!"); 
 | 
        } 
 | 
        if( platformWaterGasMapper.selectCount(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted, Constants.ZERO) 
 | 
                .ne(PlatformWaterGas::getId,platformWaterGas.getId()) 
 | 
                .apply("to_days(time_info) = to_days('"+ DateUtil.getPlusTime2(platformWaterGas.getTimeInfo()) +"')") 
 | 
                .eq(Constants.equalsInteger(platformWaterGas.getType(),Constants.TWO),PlatformWaterGas::getCarCode,platformWaterGas.getCarCode()))>0){ 
 | 
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该年月数据已存在,请勿重新录入,可以尝试搜索后进行数据修改!"); 
 | 
        } 
 | 
  
 | 
        platformWaterGas.setEditDate(new Date()); 
 | 
        platformWaterGas.setEditor(platformWaterGas.getLoginUserInfo().getId()); 
 | 
        platformWaterGasMapper.updateById(platformWaterGas); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<PlatformWaterGas> platformWaterGass) { 
 | 
        if (CollectionUtils.isEmpty(platformWaterGass)) { 
 | 
            return; 
 | 
        } 
 | 
        for (PlatformWaterGas platformWaterGas: platformWaterGass) { 
 | 
            this.updateById(platformWaterGas); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PlatformWaterGas findById(Integer id) { 
 | 
        return platformWaterGasMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public PlatformWaterGas findOne(PlatformWaterGas platformWaterGas) { 
 | 
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas); 
 | 
        return platformWaterGasMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<PlatformWaterGas> findList(PlatformWaterGas platformWaterGas) { 
 | 
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas); 
 | 
        return platformWaterGasMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<PlatformWaterGas> findPage(PageWrap<PlatformWaterGas> pageWrap) { 
 | 
        IPage<PlatformWaterGas> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<PlatformWaterGas> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        queryWrapper.lambda().eq(PlatformWaterGas::getIsdeleted, Constants.ZERO); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreator() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getCreator, pageWrap.getModel().getCreator()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateDate() != null) { 
 | 
            queryWrapper.lambda().ge(PlatformWaterGas::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); 
 | 
            queryWrapper.lambda().le(PlatformWaterGas::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditor() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getEditor, pageWrap.getModel().getEditor()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditDate() != null) { 
 | 
            queryWrapper.lambda().ge(PlatformWaterGas::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); 
 | 
            queryWrapper.lambda().le(PlatformWaterGas::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIsdeleted() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getIsdeleted, pageWrap.getModel().getIsdeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getTimeInfo() != null) { 
 | 
            queryWrapper.lambda().ge(PlatformWaterGas::getTimeInfo, Utils.Date.getStart(pageWrap.getModel().getTimeInfo())); 
 | 
            queryWrapper.lambda().le(PlatformWaterGas::getTimeInfo, Utils.Date.getEnd(pageWrap.getModel().getTimeInfo())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSortnum() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getSortnum, pageWrap.getModel().getSortnum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getType() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getType, pageWrap.getModel().getType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getNum() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getNum, pageWrap.getModel().getNum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getContent() != null) { 
 | 
            queryWrapper.lambda().eq(PlatformWaterGas::getContent, pageWrap.getModel().getContent()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCarCode() != null) { 
 | 
            queryWrapper.lambda().like(PlatformWaterGas::getCarCode, pageWrap.getModel().getCarCode()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStartTime() != null) { 
 | 
            queryWrapper.lambda().ge(PlatformWaterGas::getTimeInfo, pageWrap.getModel().getStartTime()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEndTime() != null) { 
 | 
            queryWrapper.lambda().le(PlatformWaterGas::getTimeInfo,  pageWrap.getModel().getEndTime()); 
 | 
        } 
 | 
        queryWrapper.lambda().orderByDesc(PlatformWaterGas::getTimeInfo ,PlatformWaterGas::getCarCode); 
 | 
        return PageData.from(platformWaterGasMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(PlatformWaterGas platformWaterGas) { 
 | 
        QueryWrapper<PlatformWaterGas> wrapper = new QueryWrapper<>(platformWaterGas); 
 | 
        return platformWaterGasMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public WaterByMonthResponse waterDataByMonth(WaterByMonthRequest param){ 
 | 
        Date queryDate = (Objects.nonNull(param)&&Objects.nonNull(param.getTimeInfo()))?param.getTimeInfo():new Date(); 
 | 
        //获取上个月日期 
 | 
        Calendar calendar = Calendar.getInstance(); 
 | 
        calendar.setTime(queryDate); 
 | 
        calendar.add(Calendar.MONTH, -1); 
 | 
        Date beforMonth = calendar.getTime(); 
 | 
        calendar.add(Calendar.MONTH, -11); 
 | 
        Date beforYearMonth = calendar.getTime(); 
 | 
  
 | 
        WaterByMonthResponse waterByMonthResponse = new WaterByMonthResponse(); 
 | 
  
 | 
        List<PlatformWaterGas> list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ZERO) 
 | 
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(queryDate,"yyyy-MM")) 
 | 
        ); 
 | 
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ 
 | 
            waterByMonthResponse.setCurrentMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); 
 | 
        } 
 | 
  
 | 
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ZERO) 
 | 
                .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)); 
 | 
        } 
 | 
  
 | 
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ZERO) 
 | 
                .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)); 
 | 
        } 
 | 
        return waterByMonthResponse; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public GasByMonthResponse gasDataByMonth(GasByMonthRequest param){ 
 | 
        Date queryDate = (Objects.nonNull(param)&&Objects.nonNull(param.getTimeInfo()))?param.getTimeInfo():new Date(); 
 | 
        //获取上个月日期 
 | 
        Calendar calendar = Calendar.getInstance(); 
 | 
        calendar.setTime(queryDate); 
 | 
        calendar.add(Calendar.MONTH, -1); 
 | 
        Date beforMonth = calendar.getTime(); 
 | 
        calendar.add(Calendar.MONTH, -11); 
 | 
        Date beforYearMonth = calendar.getTime(); 
 | 
  
 | 
        GasByMonthResponse response = new GasByMonthResponse(); 
 | 
  
 | 
        List<PlatformWaterGas> list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ONE) 
 | 
                .like(PlatformWaterGas::getTimeInfo,DateUtil.getDate(queryDate,"yyyy-MM")) 
 | 
        ); 
 | 
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){ 
 | 
            response.setCurrentMonth(list.stream().map(m->m.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add)); 
 | 
        } 
 | 
  
 | 
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ONE) 
 | 
                .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)); 
 | 
        } 
 | 
  
 | 
        list = platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.ONE) 
 | 
                .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)); 
 | 
        } 
 | 
        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; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |