From 2a959177f1adcd36f790e14718bbd116752e5c64 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期六, 12 十月 2024 17:19:10 +0800
Subject: [PATCH] 2024-10-12 朱宝民 优化交易明细导出、取水口导出、阀控器导出

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java |  443 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 384 insertions(+), 59 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 76bb686..7f438a3 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
@@ -7,14 +7,18 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoBa.BaSettingsMapper;
+import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
 import com.dy.pipIrrGlobal.daoSe.*;
 import com.dy.pipIrrGlobal.pojoSe.SeCardOperate;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
 import com.dy.pipIrrGlobal.pojoSe.SeManagerCard;
+import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory;
+import com.dy.pipIrrGlobal.voRm.VoExpend;
 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.*;
+import com.dy.pipIrrSell.clientCard.CardStateENUM;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import com.dy.pipIrrSell.result.SellResultCode;
@@ -25,6 +29,7 @@
 import org.springframework.stereotype.Service;
 
 import java.text.DecimalFormat;
+import java.time.Duration;
 import java.util.*;
 
 /**
@@ -58,11 +63,21 @@
     @Autowired
     private SeManagerCardMapper seManagerCardMapper;
 
+    @Autowired
+    private SePaymentMethodMapper sePaymentMethodMapper;
+
+    @Autowired
+    private SeRechargeHistoryMapper seRechargeHistoryMapper;
+
+    @Autowired
+    private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
+
     @Value("${project.projectNo}")
     private Integer projectNo;
 
     /**
      * 娣诲姞寮�鍗¤褰�
+     *
      * @param po 姘村崱鎿嶄綔瀵硅薄
      * @return 寮�鍗¤褰曚富閿�
      */
@@ -73,6 +88,7 @@
 
     /**
      * 鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍唬鐮侊紝寮�鍗′娇鐢�
+     *
      * @param clientNum 鍐滄埛缂栧彿
      * @return 5绾ц鏀垮尯鍒掍唬鐮�
      */
@@ -86,6 +102,7 @@
 
     /**
      * 鏍规嵁鍐滄埛缂栧彿鑾峰彇5绾ц鏀垮尯鍒掍覆areaCode锛岃ˉ鍗¤繃绋嬩腑寮�鏂板崱浣跨敤
+     *
      * @param clientId
      * @return
      */
@@ -95,6 +112,7 @@
 
     /**
      * 鏍规嵁琛屾斂鍖哄垝涓叉ā鍧楁煡璇㈡按鍗$紪鍙凤紝寮�鍗′娇鐢�
+     *
      * @param areaCode
      * @return
      */
@@ -104,6 +122,7 @@
 
     /**
      * 鏍规嵁琛屾斂鍖哄垝涓叉ā绯婃煡璇㈢鐞嗗崱缂栧彿锛屽垱寤虹鐞嗗崱浣跨敤
+     *
      * @param areaCode
      * @return
      */
@@ -113,6 +132,7 @@
 
     /**
      * 鍒涘缓绠$悊鍗�
+     *
      * @param po
      * @return
      */
@@ -123,6 +143,7 @@
 
     /**
      * 鏍规嵁鍐滄埛缂栧彿鑾峰彇鍐滄埛ID锛屽紑鍗′娇鐢�
+     *
      * @param clientNum
      * @return
      */
@@ -132,6 +153,7 @@
 
     /**
      * 娣诲姞姘村崱鎿嶄綔瀵硅薄锛屽悇鎿嶄綔閮戒娇鐢�
+     *
      * @param po 姘村崱鎿嶄綔瀵硅薄
      * @return 鎿嶄綔璁板綍涓婚敭
      */
@@ -142,11 +164,12 @@
 
     /**
      * 娣诲姞鍏呭�艰褰�
-     * 淇敼鍐滄埛淇℃伅銆佹坊鍔犲厖鍊艰褰�
+     * 淇敼鍐滄埛淇℃伅銆佹坊鍔犳按鍗℃搷浣滆褰曘�佹坊鍔犲厖鍊艰褰�
+     *
      * @param po
      * @return
      */
-    public BaseResponse<Boolean> addRecharge(DtoRecharge po){
+    public BaseResponse<Boolean> addRecharge(DtoRecharge po) {
         /**
          * cardId           姘村崱缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級
          * clientId         鍐滄埛缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級
@@ -174,9 +197,16 @@
         Long operator = po.getOperator();
         Date rechargeTime = new Date();
 
-        // 楠岃瘉姘村崱鐘舵�佹槸鍚︽敮鎸佸綋鍓嶆搷浣�
+        // 鑾峰彇姘村崱鐘舵��
         String stateName = Optional.ofNullable(clientCardSv.getCardStateByCardNum(cardNum)).orElse("");
-        if(stateName.length() == 0 || !stateName.equals("姝e父")) {
+
+        // 鍗曠嫭鍏呭�兼椂鍗$墖蹇呴』涓烘甯�
+        if (remarks.trim().equals("鍏呭��") && !stateName.equals("姝e父")) {
+            return BaseResponseUtils.buildErrorMsg(stateName + ", " + SellResultCode.THE_CARD_NOT_SUPPORT_THIS_OPERATION.getMessage());
+        }
+
+        // 寮�鍗″悓姝ュ厖鍊兼椂鍏佽鍗$墖涓烘棤鏁堢姸鎬侊紝寰楀埌閫氱煡鍚庤嚜鍔ㄥ彉鏇翠负鏈夋晥
+        if (!remarks.trim().equals("鍏呭��") && !stateName.equals("姝e父") && !stateName.equals("鏃犳晥鍗$墖")) {
             return BaseResponseUtils.buildErrorMsg(stateName + ", " + SellResultCode.THE_CARD_NOT_SUPPORT_THIS_OPERATION.getMessage());
         }
 
@@ -184,29 +214,27 @@
          * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
         Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
-        if(map == null || map.size() <= 0) {
+        if (map == null || map.size() <= 0) {
             return BaseResponseUtils.buildErrorMsg(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
         clientId = Long.parseLong(map.get("clientId").toString());
 
         /**
-         * 淇敼鍐滄埛鍗′俊鎭細
-         *      琛ュ崱鏃堕棿
-         *      鏈�鍚庢搷浣滅被鍨�-2
+         * 鍏呭�兼椂涓嶄慨鏀瑰啘鎴峰崱淇℃伅锛屾敹鍒版垚鍔熼�氱煡鍚庡啀淇敼锛氫綑棰濄�佸厖鍊兼椂闂淬�佹渶鍚庢搷浣滅被鍨�
+         SeClientCard seClientCard = new SeClientCard();
+         seClientCard.setId(cardId);
+         seClientCard.setMoney(afterRecharge);
+         seClientCard.setRechargedt(rechargeTime);
+         seClientCard.setLastoper(LastOperateENUM.RECHARGE.getCode ());
+         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+         if(rec_updateClientCard == 0) {
+         return BaseResponseUtils.buildErrorMsg(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
+         }
          */
-        SeClientCard seClientCard = new SeClientCard();
-        seClientCard.setId(cardId);
-        seClientCard.setMoney(afterRecharge);
-        seClientCard.setRechargedt(rechargeTime);
-        seClientCard.setLastoper(LastOperateENUM.RECHARGE.getCode ());
-        Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
-        if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildErrorMsg(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
-        }
 
         /**
-         * 娣诲姞鍏呭�艰褰�
+         * 娣诲姞姘村崱鍏呭�兼搷浣滆褰�
          */
         SeCardOperate seCardOperate = new SeCardOperate();
         seCardOperate.setCardId(cardId);
@@ -220,23 +248,45 @@
         seCardOperate.setRemarks(remarks);
         seCardOperate.setOperator(operator);
         seCardOperate.setOperateDt(rechargeTime);
-
+        seCardOperate.setOperateValid((byte) 1);
         seCardOperateMapper.insert(seCardOperate);
         Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L);
-        if(rec == 0) {
-            return BaseResponseUtils.buildErrorMsg(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
+        if (rec == 0) {
+            return BaseResponseUtils.buildErrorMsg(SellResultCode.RECHARGE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
+        }
+
+        /**
+         * 娣诲姞鍏呭�煎巻鍙茶褰�
+         */
+        SeRechargeHistory seRechargeHistory = new SeRechargeHistory();
+        seRechargeHistory.setCardid(cardId);
+        seRechargeHistory.setClientid(clientId);
+        seRechargeHistory.setMoney(money);
+        seRechargeHistory.setAmount(amount);
+        seRechargeHistory.setGift(gift);
+        seRechargeHistory.setAfterrecharge(afterRecharge);
+        seRechargeHistory.setPaymentid(paymentId);
+        seRechargeHistory.setPrice(price);
+        seRechargeHistory.setRemarks(remarks);
+        seRechargeHistory.setOperator(operator);
+        seRechargeHistory.setOperatedt(rechargeTime);
+        seRechargeHistory.setOperateValid((byte) 1);
+        seRechargeHistoryMapper.insert(seRechargeHistory);
+        Long rec_seRechargeHistory = Optional.ofNullable(seRechargeHistory.getId()).orElse(0L);
+        if (rec_seRechargeHistory == 0) {
+            return BaseResponseUtils.buildErrorMsg(SellResultCode.RECHARGE_FAIL_WRITE_RECHARGE_HISTORY_ERROR.getMessage());
         }
 
         Map map_response = new HashMap();
-//        map_response.put("projectNo", String.format("%02x", Integer.parseInt(getProjectNo())));
         map_response.put("projectNo", String.format("%02x", projectNo));
         map_response.put("orderNumber", rec);
         map_response.put("cardNum", cardNum);
-        return BaseResponseUtils.buildSuccess(map_response) ;
+        return BaseResponseUtils.buildSuccess(map_response);
     }
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍏呭�艰褰�
+     *
      * @param queryVo
      * @return
      */
@@ -257,64 +307,141 @@
 
         Long itemTotal = seCardOperateMapper.getRecordCount(params);
 
-        QueryResultVo<List<VoRecharge>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        QueryResultVo<List<VoRecharge>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
 
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCardOperateMapper.getRecharges(params);
-        return rsVo ;
+        return rsVo;
+    }
+
+    /**
+     * 鑾峰彇鍏呭�艰褰曪紝绠$悊骞冲彴鍏呭�煎垪琛ㄤ娇鐢紝APP鏈娇鐢�
+     *
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoRechargeNew>> getRechargesNew(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getRechargesCountNew(params);
+
+        QueryResultVo<List<VoRechargeNew>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getRechargesNew(params);
+        return rsVo;
+    }
+
+    /**
+     * 鑾峰彇杩旇繕璁板綍锛岀鐞嗗钩鍙板厖鍊煎垪琛ㄤ娇鐢�
+     *
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoRefund>> getRefunds(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = seCardOperateMapper.getRefundsCount(params);
+
+        QueryResultVo<List<VoRefund>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seCardOperateMapper.getRefunds(params);
+        return rsVo;
+    }
+
+    /**
+     * 鑾峰彇姘村崱娑堣垂璁板綍锛岀鐞嗗钩鍙颁娇鐢�
+     *
+     * @param queryVo
+     * @return
+     */
+    public QueryResultVo<List<VoExpend>> getExpends(QoRecharge queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = rmOpenCloseValveHistoryMapper.getExpendsCount(params);
+
+        QueryResultVo<List<VoExpend>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = rmOpenCloseValveHistoryMapper.getExpends(params);
+        return rsVo;
     }
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍
+     *
      * @param vo
      * @return
      */
-    public Map getTransactions(QoTransaction vo){
+    public Map getTransactions(QoTransaction vo) {
         DecimalFormat df = new DecimalFormat("0.00");
         // 琛ラ綈鏌ヨ鏃堕棿
         String operateTimeStart = vo.operateTimeStart;
         String operateTimeStop = vo.operateTimeStop;
-        if(operateTimeStart != null) {
+        if (operateTimeStart != null) {
             operateTimeStart = operateTimeStart + " 00:00:00";
             vo.setOperateTimeStart(operateTimeStart);
         }
-        if(operateTimeStop != null) {
+        if (operateTimeStop != null) {
             operateTimeStop = operateTimeStop + " 23:59:59";
             vo.setOperateTimeStop(operateTimeStop);
         }
 
         // 鐢熸垚鏌ヨ鍙傛暟
-        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ;
+        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) {
+        QueryResultVo<List<VoTradeDetails>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = vo.pageSize;
+        rsVo.pageCurr = vo.pageCurr;
+        rsVo.calculateAndSet(itemTotal, params);
+
+        rsVo.obj = seCardOperateMapper.getTransactions(params);
+        List<VoTradeDetails> list = rsVo.obj;
+        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++) {
+        Double totalGift = 0.0;
+        Double totalRefund = 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);
+            Double gift = Optional.ofNullable(job.getDouble("gift")).orElse(0.0);
+            Double refundAmount = Optional.ofNullable(job.getDouble("refundAmount")).orElse(0.0);
+
             totalWaterCost = totalWaterCost + waterCost;
             totalCardCost = totalCardCost + cardCost;
+            totalGift = totalGift + gift;
+            totalRefund = totalRefund + refundAmount;
         }
 
         Map map_record = new HashMap();
-        map_record.put("itemTotal", itemTotal);
-        map_record.put("list", list);
+        map_record.put("list", rsVo);
 
         Map map_result = new HashMap();
         map_result.put("waterCost", df.format(totalWaterCost));
         map_result.put("cardCost", df.format(totalCardCost));
+        map_result.put("gift", df.format(totalGift));
+        map_result.put("refund", df.format(totalRefund));
+
         map_result.put("records", map_record);
 
         return map_result;
@@ -322,6 +449,7 @@
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇寮�鍗¤褰�
+     *
      * @param queryVo
      * @return
      */
@@ -329,11 +457,11 @@
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
         String activeTimeStart = queryVo.activeTimeStart;
         String activeTimeStop = queryVo.activeTimeStop;
-        if(activeTimeStart != null) {
+        if (activeTimeStart != null) {
             activeTimeStart = activeTimeStart + " 00:00:00";
             queryVo.setActiveTimeStart(activeTimeStart);
         }
-        if(activeTimeStop != null) {
+        if (activeTimeStop != null) {
             activeTimeStop = activeTimeStop + " 23:59:59";
             queryVo.setActiveTimeStop(activeTimeStop);
         }
@@ -342,18 +470,19 @@
 
         Long itemTotal = seCardOperateMapper.getActiveCardRecordCount(params);
 
-        QueryResultVo<List<VoActiveCard>> rsVo = new QueryResultVo<>() ;
+        QueryResultVo<List<VoActiveCard>> rsVo = new QueryResultVo<>();
 
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
 
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCardOperateMapper.getActiveCards(params);
-        return rsVo ;
+        return rsVo;
     }
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇琛ュ崱璁板綍
+     *
      * @param queryVo
      * @return
      */
@@ -361,11 +490,11 @@
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
         String reissueCardTimeStart = queryVo.reissueCardTimeStart;
         String reissueCardTimeStop = queryVo.reissueCardTimeStop;
-        if(reissueCardTimeStart != null) {
+        if (reissueCardTimeStart != null) {
             reissueCardTimeStart = reissueCardTimeStart + " 00:00:00";
             queryVo.setReissueCardTimeStart(reissueCardTimeStart);
         }
-        if(reissueCardTimeStop != null) {
+        if (reissueCardTimeStop != null) {
             reissueCardTimeStop = reissueCardTimeStop + " 23:59:59";
             queryVo.setReissueCardTimeStop(reissueCardTimeStop);
         }
@@ -374,18 +503,19 @@
 
         Long itemTotal = seCardOperateMapper.getReissueCardRecordCount(params);
 
-        QueryResultVo<List<VoReissueCard>> rsVo = new QueryResultVo<>() ;
+        QueryResultVo<List<VoReissueCard>> rsVo = new QueryResultVo<>();
 
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
 
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCardOperateMapper.getReissueCards(params);
-        return rsVo ;
+        return rsVo;
     }
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇閫氱敤鎿嶄綔璁板綍
+     *
      * @param queryVo
      * @return
      */
@@ -393,11 +523,11 @@
         //瀹屽杽鏌ヨ鍏呭�艰褰曠殑璧锋鏃堕棿
         String timeStart = queryVo.getTimeStart();
         String timeStop = queryVo.getTimeStop();
-        if(timeStart != null) {
+        if (timeStart != null) {
             timeStart = timeStart + " 00:00:00";
             queryVo.setTimeStart(timeStart);
         }
-        if(timeStop != null) {
+        if (timeStop != null) {
             timeStop = timeStop + " 23:59:59";
             queryVo.setTimeStop(timeStop);
         }
@@ -406,22 +536,30 @@
 
         Long itemTotal = Optional.ofNullable(seCardOperateMapper.getCommonOperationRecordCount(params)).orElse(0L);
 
-        QueryResultVo<List<VoOperate>> rsVo = new QueryResultVo<>() ;
+        QueryResultVo<List<VoOperate>> rsVo = new QueryResultVo<>();
 
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
 
         rsVo.calculateAndSet(itemTotal, params);
         rsVo.obj = seCardOperateMapper.getCommonOperations(params);
-        return rsVo ;
+        return rsVo;
     }
 
     /**
      * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鏀舵嵁鍒楄〃
+     *
      * @param queryVo
      * @return
      */
     public Map getReceipts(QoReceipt queryVo) {
+        if (queryVo.getTimeStart() != null && queryVo.getTimeStart() != "") {
+            queryVo.setTimeStart(queryVo.getTimeStart() + " 00:00:00");
+        }
+        if (queryVo.getTimeStop() != null && queryVo.getTimeStop() != "") {
+            queryVo.setTimeStop(queryVo.getTimeStop() + " 23:59:59");
+        }
+
         Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
 
         DecimalFormat df = new DecimalFormat("#.00");
@@ -429,9 +567,9 @@
 
         Long itemTotal = seCardOperateMapper.getReceiptsRecordCount(params);
 
-        QueryResultVo<List<VoReceipt>> rsVo = new QueryResultVo<>() ;
-        rsVo.pageSize = queryVo.pageSize ;
-        rsVo.pageCurr = queryVo.pageCurr ;
+        QueryResultVo<List<VoReceipt>> rsVo = new QueryResultVo<>();
+        rsVo.pageSize = queryVo.pageSize;
+        rsVo.pageCurr = queryVo.pageCurr;
 
         rsVo.calculateAndSet(itemTotal, params);
         //rsVo.obj = seCardOperateMapper.getReceipts(params);
@@ -454,13 +592,14 @@
 
     /**
      * 鍒ゆ柇鎸囧畾姘村崱鏄惁涓烘寕澶辩姸鎬佷笖鏃犺ˉ鍗¤褰�
+     *
      * @param cardNum 姘村崱缂栧彿
      * @return 鏄惁宸叉寕澶辨湭琛ュ崱
      */
     public Boolean isLostAndUnreplaced(Long cardNum) {
         Integer lostCount = seClientCardMapper.getLostCount(cardNum);
         Integer replacedCount = seClientCardMapper.getReplacedCount(cardNum);
-        if(lostCount > 0 && replacedCount == 0) {
+        if (lostCount > 0 && replacedCount == 0) {
             return true;
         }
         return false;
@@ -468,6 +607,7 @@
 
     /**
      * 淇敼鍐滄埛姘村崱
+     *
      * @param po
      * @return
      */
@@ -477,6 +617,7 @@
 
     /**
      * 鑾峰彇椤圭洰缂栧彿
+     *
      * @return
      */
     public String getProjectNo() {
@@ -485,10 +626,194 @@
 
     /**
      * 鏍规嵁姘村崱缂栧彿鑾峰彇鍏舵寕澶辨椂閫�娆鹃噾棰濓紙琛ュ崱鏃跺垽鏂娇鐢級
+     *
      * @param cardNum
      * @return
      */
     public Double getTradeAmountByCardNo(Long cardNum) {
         return seCardOperateMapper.getTradeAmountByCardNo(cardNum);
     }
+
+    /**
+     * 鏍规嵁姘村崱鍦板潃鍒ゆ柇璇ュ崱鏄惁鍙互寮�鍗�
+     *
+     * @param cardAddr
+     * @return
+     */
+    public Boolean canActiveCard(String cardAddr) {
+
+        // 鎸囧畾姘村崱鍦板潃鐨勬按鍗℃暟閲忥紝鏃犳晥鍗$墖鎺掗櫎鍦ㄥ
+        Long cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddr(cardAddr)).orElse(0L);
+        if (cardCount == 0) {
+            return true;
+        }
+
+        // 鎸囧畾姘村崱鍦板潃涓旀甯哥姸鎬佹垨鎸傚け鐘舵�佺殑姘村崱鏁伴噺
+        cardCount = Optional.ofNullable(seClientCardMapper.getCountByCardAddrAndState(cardAddr)).orElse(0L);
+        if (cardCount == 0) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿
+     *
+     * @param cardAddr
+     * @return
+     */
+    public Long getCardIdByAddr(String cardAddr) {
+        return seClientCardMapper.getCardIdByAddr(cardAddr);
+    }
+
+    /**
+     * 渚濇嵁姘村崱鍦板潃灏嗘渶鍚庝竴鏉℃棤鏁堢姸鎬佺殑鎸囧畾鎿嶄綔璁板綍鏀逛负鏈夋晥
+     *
+     * @param cardAddr
+     * @param operateType
+     * @return
+     */
+    public Integer turnCardValidByAddr(String cardAddr, Integer operateType) {
+        return seClientCardMapper.turnCardValidByAddr(cardAddr, operateType);
+    }
+
+    /**
+     * 鏍规嵁姘村崱ID銆佹搷浣滅被鍨嬭幏鍙栬幏鍙栨渶鍚庝竴鏉¤褰曪紝鍒ゆ柇寮�鍗℃槸鍚﹀悓姝ュ厖鍊间娇鐢�
+     *
+     * @param cardId
+     * @return
+     */
+    public Integer turnOperateValidByCardId(Long cardId, Integer operateType) {
+        return seCardOperateMapper.turnOperateValidByCardId(cardId, operateType);
+    }
+
+    /**
+     * 渚濇嵁姘村崱ID灏嗘渶鍚庝竴鏉℃棤鏁堢姸鎬佺殑鍏呭�煎巻鍙茶褰曟敼涓烘湁鏁�
+     *
+     * @param cardId
+     * @return
+     */
+    public Integer turnRechargeHistoryValidByCardId(Long cardId) {
+        return seRechargeHistoryMapper.turnRechargeHistoryValidByCardId(cardId);
+    }
+
+    /**
+     * 鏍规嵁姘村崱ID鍒ゆ柇鏄惁涓哄紑鍗℃椂鍚屾鍏呭��
+     * 璇ユ按鍗D涓嶅瓨鍦ㄥ紑鍗¤褰曟垨鍏呭�艰褰曞垯杩斿洖false
+     * 濡傛灉寮�鍗℃搷浣滀笌鍏呭�兼搷浣滄椂闂撮棿闅旇秴杩�30绉掑垯杩斿洖false
+     * 濡傛灉鍏呭�奸噾棰濆ぇ浜�0涓斿厖鍊煎墠浣欓涓�0鍒欒繑鍥瀟rue
+     *
+     * @param cardId
+     * @return
+     */
+    public Boolean isMergeRecharge(Long cardId) {
+        SeCardOperate activeCard = seCardOperateMapper.getCardOperate(1, cardId);
+        SeCardOperate recharge = seCardOperateMapper.getCardOperate(2, cardId);
+        if (activeCard == null || recharge == null) {
+            return false;
+        }
+
+        Duration duration = Duration.between(activeCard.getOperateDt().toInstant(), recharge.getOperateDt().toInstant());
+        if (duration.toSeconds() > 30) {
+            return false;
+        }
+
+        Float money = Optional.ofNullable(recharge.getMoney()).orElse(0f);
+        Float tradeAmount = Optional.ofNullable(recharge.getTradeAmount()).orElse(0f);
+
+        if (tradeAmount > 0 && money == 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * 鏍规嵁姘村崱ID浠庢搷浣滆褰曡〃涓彇鍑猴細浣欓銆佷氦鏄撻噾棰濄�佽禒閫侀噾棰濓紝姹傚拰寰楀埌姘村崱浣欓
+     * 灏嗕綑棰濇洿鏂板埌姘村崱琛ㄤ腑
+     *
+     * @param cardId
+     * @return
+     */
+    public Boolean updateCard(Long cardId) {
+        SeCardOperate recharge = seCardOperateMapper.getCardOperate(2, cardId);
+        if (recharge == null) {
+            return false;
+        }
+        Float money = Optional.ofNullable(recharge.getMoney()).orElse(0f);
+        Float amount = Optional.ofNullable(recharge.getTradeAmount()).orElse(0f);
+        Float gift = Optional.ofNullable(recharge.getGift()).orElse(0f);
+
+        SeClientCard clientCard = new SeClientCard();
+        clientCard.setId(cardId);
+        clientCard.setMoney(money + amount + gift);
+        clientCard.setRechargedt(recharge.getOperateDt());
+        clientCard.setLastoper(LastOperateENUM.RECHARGE.getCode());
+        Integer rec_updateClientCard = seClientCardMapper.updateByPrimaryKeySelective(clientCard);
+        if (rec_updateClientCard == null || rec_updateClientCard == 0) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 濡傛灉琛ュ崱鏃惰浆绉讳簡閫�杩橀噾棰濓紝娓呯┖鎸傚け鍗′綑棰�
+     * @param operateType
+     * @param cardId
+     */
+    public void emptyCardBalance(Integer operateType, Long cardId) {
+        SeCardOperate cardOperate = seCardOperateMapper.getCardOperate(operateType, cardId);
+        if(cardOperate != null) {
+            Float noTradeAmount = cardOperate.getNoTradeAmount();
+            if(noTradeAmount != null && noTradeAmount > 0) {
+                Long originalCardId = seClientCardMapper.getOriginalCardIdByCardId(cardId);
+                if(originalCardId != null) {
+                    SeClientCard clientCard = new SeClientCard();
+                    clientCard.setId(cardId);
+                    clientCard.setMoney(0f);
+                    seClientCardMapper.updateByPrimaryKeySelective(clientCard);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 淇敼娉ㄩ攢姘村崱琛ㄧ殑璁板綍鍙婁綑棰濓紙0锛�
+     * @param cardId
+     * @return
+     */
+    public Integer updateCancels(Integer operateType, Long cardId) {
+        SeCardOperate cardOperate = seCardOperateMapper.getCardOperate(operateType, cardId);
+        Date cancelTime = Optional.ofNullable(cardOperate.getOperateDt()).orElse(new Date());
+
+        SeClientCard clientCard = new SeClientCard();
+        clientCard.setId(cardId);
+        clientCard.setCanceldt(cancelTime);
+        clientCard.setMoney(0f);
+        clientCard.setState(CardStateENUM.CANCELLED.getCode());
+        clientCard.setLastoper(LastOperateENUM.CANCEL.getCode());
+        return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
+    }
+
+    /**
+     * 淇敼琛ユ墸姘村崱琛ㄧ殑鎿嶄綔淇℃伅鍙婁綑棰�
+     * @param operateType
+     * @param cardId
+     * @return
+     */
+    public Integer updateRefund(Integer operateType, Long cardId) {
+        SeCardOperate cardOperate = seCardOperateMapper.getCardOperate(operateType, cardId);
+        Date refundTime = Optional.ofNullable(cardOperate.getOperateDt()).orElse(new Date());
+        Float money = cardOperate.getMoney();
+        Float refund = cardOperate.getRefundAmount();
+
+        SeClientCard clientCard = new SeClientCard();
+        clientCard.setId(cardId);
+        clientCard.setRefunddt(refundTime);
+        clientCard.setMoney(money + refund);
+        clientCard.setLastoper(LastOperateENUM.REFUND.getCode());
+        return seClientCardMapper.updateByPrimaryKeySelective(clientCard);
+    }
 }

--
Gitblit v1.8.0