From 1c20c8231980a8d4b91688ff8641a06d3b2f68ab Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期二, 14 十月 2025 16:34:22 +0800 Subject: [PATCH] 改bug --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java | 206 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 197 insertions(+), 9 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java index 202d2b0..40b49e9 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformWaterGasServiceImpl.java @@ -1,30 +1,37 @@ 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; 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.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; /** * 鏈堝彴_鐢ㄦ按鐢ㄦ皵淇℃伅璁板綍琛⊿ervice瀹炵幇 @@ -41,11 +48,12 @@ 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(),"瀵逛笉璧凤紝璇ュ勾鏈堟暟鎹凡瀛樺湪锛岃鍕块噸鏂板綍鍏ワ紝鍙互灏濊瘯鎼滅储鍚庤繘琛屾暟鎹慨鏀癸紒"); + 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(),"瀵逛笉璧凤紝璇ュ勾鏈堟暟鎹凡瀛樺湪锛岃鍕块噸鏂板綍鍏ワ紝鍙互灏濊瘯鎼滅储鍚庤繘琛屾暟鎹慨鏀癸紒"); } @@ -109,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(),"瀵逛笉璧凤紝璇ュ勾鏈堟暟鎹凡瀛樺湪锛岃鍕块噸鏂板綍鍏ワ紝鍙互灏濊瘯鎼滅储鍚庤繘琛屾暟鎹慨鏀癸紒"); } @@ -150,6 +159,7 @@ 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()); } @@ -207,4 +217,182 @@ 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; + } + + + + @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); + } + } + } -- Gitblit v1.9.3