From 5320225880ad8446100c04a897a9208b03790c55 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期五, 02 二月 2024 21:00:13 +0800
Subject: [PATCH] 2024-02-02 朱宝民 重构IC卡操作表,调整补扣接口及充值记录查询接口,重构开卡明细记录查询接口

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java |  288 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 274 insertions(+), 14 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
index 460678f..a6aa80d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -1,17 +1,21 @@
 package com.dy.pipIrrSell.cardOperate;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
 import com.dy.pipIrrGlobal.daoSe.SeClientMapper;
+import com.dy.pipIrrGlobal.daoSe.SeGeneralMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
-import com.dy.pipIrrGlobal.voSe.VoRecharge;
+import com.dy.pipIrrGlobal.voSe.*;
 import com.dy.pipIrrSell.cardOperate.dto.DtoRecharge;
 import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM;
-import com.dy.pipIrrSell.cardOperate.qo.QoRecharge;
+import com.dy.pipIrrSell.cardOperate.qo.*;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import com.dy.pipIrrSell.result.SellResultCode;
@@ -20,6 +24,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -43,6 +50,9 @@
 
     @Autowired
     private ClientCardSv clientCardSv;
+
+    @Autowired
+    private SeGeneralMapper seGeneralMapper;
 
 
     /**
@@ -134,6 +144,13 @@
         Long operator = po.getOperator();
         Date rechargeTime = new Date();
 
+
+        // 楠岃瘉姘村崱鐘舵�佹槸鍚︽敮鎸佸綋鍓嶆搷浣�
+        String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(Long.parseLong(cardNum))).orElse("");
+        if(stateName.length() == 0 || !stateName.equals("姝e父")) {
+            return BaseResponseUtils.buildFail(stateName + ", " + SellResultCode.THE_CARD_NOT_SUPPORT_THIS_OPERATION.getMessage());
+        }
+
         /**
          * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
@@ -185,6 +202,11 @@
     }
 
 
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍏呭�艰褰�
+     * @param queryVo
+     * @return
+     */
     public QueryResultVo<List<VoRecharge>> getRecharges(QoRecharge queryVo) {
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
         String rechargeTimeStart = queryVo.rechargeTimeStart;
@@ -203,21 +225,259 @@
         Long itemTotal = seCardOperateMapper.getRecordCount(params);
 
         QueryResultVo<List<VoRecharge>> rsVo = new QueryResultVo<>() ;
-        Integer pageCurr = 0;
-        Integer pageSize = 10000;
-        rsVo.pageCurr = 1;
-        rsVo.pageSize = 10000;
-        if(queryVo.pageSize != null && queryVo.pageCurr != null) {
-            rsVo.pageSize = queryVo.pageSize ;
-            rsVo.pageCurr = queryVo.pageCurr;
-            pageSize = queryVo.pageSize ;
-            pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
-        }
-        params.put("pageCurr", pageCurr);
-        params.put("pageSize", pageSize);
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
 
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCardOperateMapper.getRecharges(params);
         return rsVo ;
     }
+
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍
+     * @param vo
+     * @return
+     */
+    public Map getTransactions(QoTransaction vo){
+        DecimalFormat df = new DecimalFormat("0.00");
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if(operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if(operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = Optional.ofNullable(seCardOperateMapper.getTransactionRecordCount(params)).orElse(0L);
+
+        List<VoTradeDetails> list = seCardOperateMapper.getTransactions(params);
+        if(list.size() == 0) {
+            return new HashMap();
+        }
+
+        // 閬嶅巻浜ゆ槗鏄庣粏璁板綍锛屾眹鎬昏喘姘撮噾棰濄�佽喘鍗¢噾棰�
+        Double totalWaterCost = 0.0;
+        Double totalCardCost = 0.0;
+        JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
+        for(int i = 0; i < array.size(); i++) {
+            JSONObject job = array.getJSONObject(i);
+            Double waterCost = Optional.ofNullable(job.getDouble("waterCost")).orElse(0.0);
+            Double cardCost = Optional.ofNullable(job.getDouble("cardCost")).orElse(0.0);
+            totalWaterCost = totalWaterCost + waterCost;
+            totalCardCost = totalCardCost + cardCost;
+        }
+
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", itemTotal);
+        map_record.put("list", list);
+
+        Map map_result = new HashMap();
+        map_result.put("waterCost", df.format(totalWaterCost));
+        map_result.put("cardCost", df.format(totalCardCost));
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
+
+    /**
+     * 鑾峰彇浜ゆ槗缁熻璁板綍
+     * 1.浜ゆ槗缁熻璁板綍
+     * 2.绗旀暟鍚堣銆佸疄鏀堕噾棰濆悎璁°�佽禒閫侀噾棰濆悎璁�
+     * 3.姣忎竴澶┿�佸悇绉嶆敮浠樻柟寮忓疄鏀堕噾棰濆悎璁�
+     * @param vo
+     * @return
+     */
+    public Map getTransactionStatistics(QoTransactionStatistics vo) throws ParseException {
+        /**
+         * 閬嶅巻鏌ヨ鏃ユ湡锛屽彇鍑烘瘡澶╀笁绉嶆敮浠樻柟寮忥紙鐜伴噾銆佹壂鐮併�佽浆璐︼級瀹炴敹閲戦
+         * 姣忓ぉ涓�涓璞�
+         * 瀵硅薄缁勬垚JSONArray娣诲姞鍒拌繑鍥炲璞′腑
+         */
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date startDate = dateFormat.parse(vo.getOperateTimeStart());
+        Date stopDate = dateFormat.parse(vo.getOperateTimeStop());
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(startDate);
+
+        JSONArray array_paymentSums = new JSONArray();
+        while (calendar.getTime().before(stopDate) || calendar.getTime().equals(stopDate)) {
+            String tradeDate = dateFormat.format(calendar.getTime()) ;
+            Float receivedCash = Optional.ofNullable(seCardOperateMapper.getPaymentSums(tradeDate ,1L)).orElse(0f);
+            Float receivedQRCode = Optional.ofNullable(seCardOperateMapper.getPaymentSums(tradeDate,2L)).orElse(0f);
+            Float receivedTransfer = Optional.ofNullable(seCardOperateMapper.getPaymentSums(tradeDate, 3L)).orElse(0f);
+            JSONObject job = new JSONObject();
+            job.put("tradeDate", tradeDate);
+            job.put("receivedCash", receivedCash);
+            job.put("receivedQRCode", receivedQRCode);
+            job.put("receivedTransfer", receivedTransfer);
+
+            array_paymentSums.add(job);
+            calendar.add(Calendar.DAY_OF_MONTH, 1);
+        }
+
+
+        // 琛ラ綈鏌ヨ鏃堕棿
+        String operateTimeStart = vo.operateTimeStart;
+        String operateTimeStop = vo.operateTimeStop;
+        if(operateTimeStart != null) {
+            operateTimeStart = operateTimeStart + " 00:00:00";
+            vo.setOperateTimeStart(operateTimeStart);
+        }
+        if(operateTimeStop != null) {
+            operateTimeStop = operateTimeStop + " 23:59:59";
+            vo.setOperateTimeStop(operateTimeStop);
+        }
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+
+        //鑾峰彇绗旀暟鍚堣銆佸疄鏀堕噾棰濆悎璁°�佽禒閫侀噾棰濆悎璁�
+        Integer totalCount = 0;
+        Float totalReceived = 0f;
+        Float totalGift = 0f;
+        Map map_sum = Optional.ofNullable(seCardOperateMapper.getTransactionStatisticsSums(params)).orElse(new HashMap());
+        if(map_sum.size() > 0) {
+            totalCount = Integer.parseInt(map_sum.get("totalCount").toString());
+            totalReceived = Float.parseFloat(map_sum.get("totalReceived").toString());
+            totalGift = Float.parseFloat(map_sum.get("totalGift").toString());
+        }
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = seCardOperateMapper.getTransactionStatisticsRecordCount(params);
+
+        Integer pageSize = vo.getPageSize();
+        // 璁$畻鎬婚〉鏁�
+        Integer pageTotal ;
+        pageTotal = (int)Math.ceil((itemTotal==null?0.0D:itemTotal.doubleValue())/pageSize);
+
+        // 鏍规嵁褰撳墠椤电爜鍙婃瘡椤垫暟閲忚绠楀亸绉婚噺
+        Integer pageCurr = (Integer.parseInt(params.get("pageCurr").toString()) - 1) * Integer.parseInt(params.get("pageSize").toString());
+        params.put("pageCurr", pageCurr);
+
+        List<VoTransactionStatistics> list = seCardOperateMapper.getTransactionStatistics(params);
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", itemTotal);
+        map_record.put("pageCurr", vo.pageCurr);
+        map_record.put("pageSize", pageSize);
+        map_record.put("pageTotal", pageTotal);
+        map_record.put("list", list);
+
+        Map map_result = new HashMap();
+        map_result.put("totalCount", totalCount);
+        map_result.put("totalReceived", totalReceived);
+        map_result.put("totalGift", totalGift);
+        map_result.put("records", map_record);
+        map_result.put("paymentSums", array_paymentSums);
+
+        return map_result;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰�
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoActiveCardNew>> getActiveCards(QoActiveCard queryVo) {
+        //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
+        String activeTimeStart = queryVo.activeTimeStart;
+        String activeTimeStop = queryVo.activeTimeStop;
+        if(activeTimeStart != null) {
+            activeTimeStart = activeTimeStart + " 00:00:00";
+            queryVo.setActiveTimeStart(activeTimeStart);
+        }
+        if(activeTimeStop != null) {
+            activeTimeStop = activeTimeStop + " 23:59:59";
+            queryVo.setActiveTimeStop(activeTimeStop);
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getActiveCardRecordCount(params);
+
+        QueryResultVo<List<VoActiveCardNew>> rsVo = new QueryResultVo<>() ;
+
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getActiveCards(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇琛ュ崱璁板綍
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoReissueCard>> getReissueCards(QoReissueCard queryVo) {
+        //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
+        String reissueCardTimeStart = queryVo.reissueCardTimeStart;
+        String reissueCardTimeStop = queryVo.reissueCardTimeStop;
+        if(reissueCardTimeStart != null) {
+            reissueCardTimeStart = reissueCardTimeStart + " 00:00:00";
+            queryVo.setReissueCardTimeStart(reissueCardTimeStart);
+        }
+        if(reissueCardTimeStop != null) {
+            reissueCardTimeStop = reissueCardTimeStop + " 23:59:59";
+            queryVo.setReissueCardTimeStop(reissueCardTimeStop);
+        }
+
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getReissueCardRecordCount(params);
+
+        QueryResultVo<List<VoReissueCard>> rsVo = new QueryResultVo<>() ;
+
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getReissueCards(params);
+        return rsVo ;
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃
+     * @param queryVo
+     * @return
+     */
+    public Map getReceipts(QoReceipt queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        DecimalFormat df = new DecimalFormat("#.00");
+        Double totalAmount = Optional.ofNullable(seCardOperateMapper.getTotalAmount(params)).orElse(0.0);
+
+        Long itemTotal = seCardOperateMapper.getReceiptsRecordCount(params);
+
+        QueryResultVo<List<VoReceipt>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        //rsVo.obj = seCardOperateMapper.getReceipts(params);
+        //return rsVo ;
+
+        List<VoReceipt> list = seCardOperateMapper.getReceipts(params);
+        Map map_record = new HashMap();
+        map_record.put("itemTotal", rsVo.itemTotal);
+        map_record.put("pageCurr", rsVo.pageCurr);
+        map_record.put("pageSize", rsVo.pageSize);
+        map_record.put("pageTotal", rsVo.pageTotal);
+        map_record.put("list", list);
+
+        Map map_result = new HashMap();
+        map_result.put("totalAmount", df.format(totalAmount));
+        map_result.put("records", map_record);
+
+        return map_result;
+    }
 }

--
Gitblit v1.8.0