| package com.dy.pipIrrStatistics.card; | 
|   | 
| import com.dy.common.webUtil.QueryResultVo; | 
| import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; | 
| import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; | 
| import com.dy.pipIrrGlobal.voSt.VoCardUsage; | 
| import com.dy.pipIrrGlobal.voSt.VoICCard; | 
| import com.dy.pipIrrStatistics.card.IcCardqo.CommonQO; | 
| import com.dy.pipIrrStatistics.card.qo.CardUsageQO; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.apache.dubbo.common.utils.PojoUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.time.LocalDate; | 
| import java.time.LocalDateTime; | 
| import java.util.HashMap; | 
| import java.util.List; | 
| import java.util.Map; | 
| import java.util.Optional; | 
|   | 
| /** | 
|  * @author ZhuBaoMin | 
|  * @date 2024-08-08 9:10 | 
|  * @LastEditTime 2024-08-08 9:10 | 
|  * @Description | 
|  */ | 
|   | 
| @Slf4j | 
| @Service | 
| public class IcCardSv { | 
|   | 
|     @Autowired | 
|     private SeCardOperateMapper seCardOperateMapper; | 
|     @Autowired | 
|     private SeClientCardMapper seClientCardMapper; | 
|   | 
|     /** | 
|      * 指定时间段内开卡总数量(物理卡) | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoICCard>> getOpenCountIcCards(CommonQO qo) { | 
|   | 
|         String timeStart = qo.getTimeStart(); | 
|         String timeStop = qo.getTimeStop(); | 
|   | 
|         if (timeStart != null && timeStart != ""){ | 
|             timeStart = timeStart + " 00:00:00"; | 
|         }else { | 
|             timeStart = LocalDate.now() + " 00:00:00"; | 
|         } | 
|         if (timeStop != null && timeStop != ""){ | 
|             timeStop = timeStop + " 23:59:59"; | 
|         }else { | 
|             timeStop = LocalDateTime.now().toString(); | 
|         } | 
|         qo.setTimeStart(timeStart); | 
|         qo.setTimeStop(timeStop); | 
|   | 
|   | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); | 
|         Long itemTotal = seCardOperateMapper.getOpenCountIcCardsCount(params); | 
|   | 
|         QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ; | 
|         rsVo.pageSize = qo.pageSize ; | 
|         rsVo.pageCurr = qo.pageCurr ; | 
|   | 
|         rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|         return rsVo ; | 
|     } | 
|   | 
|     /** | 
|      * 指定时间段内挂失总数量(物理卡) | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoICCard>> getLossCountIcCards(CommonQO qo) { | 
|   | 
|         String timeStart = qo.getTimeStart(); | 
|         String timeStop = qo.getTimeStop(); | 
|   | 
|         if (timeStart != null && timeStart != ""){ | 
|             timeStart = timeStart + " 00:00:00"; | 
|         }else { | 
|             timeStart = LocalDate.now() + " 00:00:00"; | 
|         } | 
|         if (timeStop != null && timeStop != ""){ | 
|             timeStop = timeStop + " 23:59:59"; | 
|         }else { | 
|             timeStop = LocalDateTime.now().toString(); | 
|         } | 
|         qo.setTimeStart(timeStart); | 
|         qo.setTimeStop(timeStop); | 
|   | 
|   | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); | 
|         Long itemTotal = seCardOperateMapper.getLossCountIcCardsCount(params); | 
|   | 
|         QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ; | 
|         rsVo.pageSize = qo.pageSize ; | 
|         rsVo.pageCurr = qo.pageCurr ; | 
|   | 
|         rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|         return rsVo ; | 
|     } | 
|   | 
|     /** | 
|      * 指定时间段内充值总数量(物理卡) | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoICCard>> getRechargeCountIcCards(CommonQO qo) { | 
|   | 
|         String timeStart = qo.getTimeStart(); | 
|         String timeStop = qo.getTimeStop(); | 
|   | 
|         if (timeStart != null && timeStart != ""){ | 
|             timeStart = timeStart + " 00:00:00"; | 
|         }else { | 
|             timeStart = LocalDate.now() + " 00:00:00"; | 
|         } | 
|         if (timeStop != null && timeStop != ""){ | 
|             timeStop = timeStop + " 23:59:59"; | 
|         }else { | 
|             timeStop = LocalDateTime.now().toString(); | 
|         } | 
|         qo.setTimeStart(timeStart); | 
|         qo.setTimeStop(timeStop); | 
|   | 
|   | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); | 
|         Long itemTotal = seCardOperateMapper.getRechargeCountIcCardsCount(params); | 
|   | 
|         QueryResultVo<List<VoICCard>> rsVo = new QueryResultVo<>() ; | 
|         rsVo.pageSize = qo.pageSize ; | 
|         rsVo.pageCurr = qo.pageCurr ; | 
|   | 
|         rsVo.calculateAndSet(itemTotal, params); | 
|   | 
|         return rsVo ; | 
|     } | 
|   | 
|     /** | 
|      * 当前余额总量(物理卡) | 
|      * @param | 
|      * @return | 
|      */ | 
|     public Double getTotalMoneyIcCards() { | 
|   | 
|         Double totalMoney = seClientCardMapper.getTotalMoneyIcCards(); | 
|         return totalMoney ; | 
|     } | 
|   | 
|     /** | 
|      * 获取指定时间段水卡使用情况:充值合计、消费合计、余额 | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public QueryResultVo<List<VoCardUsage>> getCardUsages(CardUsageQO qo) { | 
|   | 
|         String timeStart = qo.getTimeStart(); | 
|         String timeStop = qo.getTimeStop(); | 
|   | 
|         if (timeStart != null && timeStart != ""){ | 
|             timeStart = timeStart + " 00:00:00"; | 
|         }else { | 
|             timeStart = LocalDateTime.now().minusYears(1).toString(); | 
|         } | 
|         if (timeStop != null && timeStop != ""){ | 
|             timeStop = timeStop + " 23:59:59"; | 
|         }else { | 
|             timeStop = LocalDateTime.now().toString(); | 
|         } | 
|         qo.setTimeStart(timeStart); | 
|         qo.setTimeStop(timeStop); | 
|   | 
|         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo); | 
|   | 
|         //Long itemTotal = seCardOperateMapper.getOpenCountIcCardsCount(params); | 
|         Integer itemTotal = 0; | 
|         List<VoCardUsage> all = seClientCardMapper.getCardUsagesCount(params); | 
|         if(all != null && all.size() > 0) { | 
|             itemTotal = all.size(); | 
|         } | 
|   | 
|         QueryResultVo<List<VoCardUsage>> rsVo = new QueryResultVo<>() ; | 
|         rsVo.pageSize = qo.pageSize ; | 
|         rsVo.pageCurr = qo.pageCurr ; | 
|   | 
|         rsVo.calculateAndSet(Long.parseLong(itemTotal.toString()), params); | 
|         rsVo.obj = seClientCardMapper.getCardUsages(params); | 
|         return rsVo ; | 
|     } | 
|   | 
|     /** | 
|      * 获取售水总计信息:充值金额总计、水表消费金额总计 | 
|      * @param qo | 
|      * @return | 
|      */ | 
|     public Map getTotalWaterUse(CardUsageQO qo) { | 
|   | 
|         String timeStart = qo.getTimeStart(); | 
|         String timeStop = qo.getTimeStop(); | 
|   | 
|         if (timeStart != null && timeStart != ""){ | 
|             timeStart = timeStart + " 00:00:00"; | 
|         }else { | 
|             timeStart = LocalDate.now() + " 00:00:00"; | 
|         } | 
|         if (timeStop != null && timeStop != ""){ | 
|             timeStop = timeStop + " 23:59:59"; | 
|         }else { | 
|             timeStop = LocalDateTime.now().toString(); | 
|         } | 
|   | 
|         Float totalRecharge = Optional.ofNullable(seClientCardMapper.getTotalRecharge(timeStart, timeStop)).orElse(0f); | 
|         Float totalConsumption = Optional.ofNullable(seClientCardMapper.getTotalConsumption(timeStart, timeStop)).orElse(0f); | 
|         Map mat_total = new HashMap(); | 
|         mat_total.put("totalRecharge", totalRecharge); | 
|         mat_total.put("totalConsumption", totalConsumption); | 
|         return mat_total; | 
|     } | 
| } |