From 04585acb4f7af05e9a944c2914a8550963fbcf59 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 27 六月 2025 09:16:41 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 208 insertions(+), 8 deletions(-) diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java index f41c589..645050d 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java @@ -1,5 +1,8 @@ package com.dy.pipIrrTerminal.card; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; @@ -17,6 +20,7 @@ import com.dy.pipIrrTerminal.card.enums.ManagementCardStateENUM; import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM; import com.dy.pipIrrTerminal.card.enums.RechargeTypeENUM; +import com.dy.pipIrrTerminal.card.qo.QoTransaction; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional; import com.dy.common.util.IDLongGenerator; +import java.text.DecimalFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -527,7 +532,7 @@ } } - Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f); + Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum, null)).orElse(0f); Double waterPrice = prWaterPriceMapper.getPrice(); VoTermActiveCard voTermActiveCard = new VoTermActiveCard(); @@ -936,7 +941,7 @@ seCardOperate.setClientId(clientId); seCardOperate.setMoney(po.getBalance()); seCardOperate.setRefundAmount(po.getSupplementMoney()); - seCardOperate.setOperateType(OperateTypeENUM.WRITE_BACK.getCode()); + seCardOperate.setOperateType(OperateTypeENUM.SUPPLEMENT.getCode()); seCardOperate.setRemarks(po.getRemarks()); seCardOperate.setOperator(po.getOperator()); seCardOperate.setOperateDt(operateTime); @@ -975,13 +980,20 @@ Integer operateType = po.getOperateType(); String orderNumber = po.getOrderNumber(); + // 鍏堟鏌ユ槸鍚︿负绠$悊鍗� + if (operateType.equals(OperateTypeENUM.MANAGEMENT_CARD_WRITE.getCode().intValue())) { + // 绠$悊绫诲瀷鍗″啓鍗¢�昏緫 + return handleManagementCardWrite(cardAddr, orderNumber); + } + + // 澶勭悊鍐滄埛鍗¢�昏緫 Long cardId = seClientCardMapper.getCardIdByAddr(cardAddr); if (cardId == null || cardId.equals(0)) { map.put("msg", "鎮ㄦ寚瀹氱殑姘村崱涓嶅瓨鍦�"); return map; } - if (operateType == 1) { + if (operateType.equals(OperateTypeENUM.ACTIVE.getCode().intValue())) { /** * 寮�鍗℃搷浣滄墽琛岄�氱煡 * 1.渚濇嵁璁㈠崟鍙峰皢鏃犳晥鐘舵�佺殑鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1003,7 +1015,7 @@ turnRechargeHistoryValidByOrderNumber(orderNumber); updateCard(cardId, orderNumber + "p"); } - } else if (operateType == 2) { + } else if (operateType.equals(OperateTypeENUM.RECHARGE.getCode().intValue())) { /** * 鍏呭�兼搷浣滄墽琛岄�氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1013,7 +1025,7 @@ turnOperateValidByOrderNumber(orderNumber + "p"); turnRechargeHistoryValidByOrderNumber(orderNumber); updateCard(cardId, orderNumber + "p"); - } else if (operateType == 3) { + } else if (operateType.equals(OperateTypeENUM.CANCEL.getCode().intValue())) { /** * 閿�鍗℃搷浣滄墽琛岄�氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1027,7 +1039,7 @@ return map; } - } else if (operateType == 4) { + } else if (operateType.equals(OperateTypeENUM.REISSUE.getCode().intValue())) { /** * 琛ュ崱鎿嶄綔鎵ц閫氱煡 * 1. 鏂版按鍗¤褰曟敼涓烘湁鏁� @@ -1042,7 +1054,7 @@ map.put("msg", "琛ュ崱鍥炶皟澶辫触"); return map; } - } else if (operateType == 5) { + } else if (operateType.equals(OperateTypeENUM.REFUND.getCode().intValue())) { /** * 琛ユ墸鎿嶄綔鎵ц閫氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1054,7 +1066,7 @@ map.put("msg", "琛ユ墸鍥炶皟澶辫触"); return map; } - } else if (operateType == 6) { + } else if (operateType.equals(OperateTypeENUM.SUPPLEMENT.getCode().intValue())) { /** * 杩旇繕鎿嶄綔鎵ц閫氱煡 * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 @@ -1070,6 +1082,48 @@ map.put("success", true); map.put("msg", "鎿嶄綔鎴愬姛"); + return map; + } + + /** + * 澶勭悊绠$悊绫诲瀷鍗″啓鍗″洖璋� + * + * @param cardAddr 鍗″湴鍧� + * @param orderNumber 璁㈠崟鍙� + * @return 澶勭悊缁撴灉 + */ + private Map<String, Object> handleManagementCardWrite(String cardAddr, String orderNumber) { + Map<String, Object> map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + try { + // 鏍规嵁鍗″湴鍧�鍜岃鍗曞彿鏌ユ壘绠$悊鍗� + SeManagementCard managementCard = seManagementCardMapper.selectOne( + com.baomidou.mybatisplus.core.toolkit.Wrappers.<SeManagementCard>lambdaQuery() + .eq(SeManagementCard::getCardAddr, cardAddr) + .eq(SeManagementCard::getOrderNo, orderNumber)); + + if (managementCard == null) { + map.put("msg", "鏈壘鍒板搴旂殑绠$悊鍗¤褰�"); + return map; + } + + // 鏇存柊绠$悊鍗$姸鎬佷负姝e父 + managementCard.setState(ManagementCardStateENUM.NORMAL.getCode()); + + int updateResult = seManagementCardMapper.updateByPrimaryKeySelective(managementCard); + if (updateResult > 0) { + map.put("success", true); + map.put("msg", "绠$悊鍗″啓鍗″畬鎴愶紝鐘舵�佸凡鏇存柊涓烘甯�"); + } else { + map.put("msg", "绠$悊鍗$姸鎬佹洿鏂板け璐�"); + } + } catch (Exception e) { + log.error("澶勭悊绠$悊鍗″啓鍗″洖璋冨紓甯�", e); + map.put("msg", "澶勭悊绠$悊鍗″啓鍗″洖璋冩椂鍙戠敓寮傚父锛�" + e.getMessage()); + } + return map; } @@ -1365,4 +1419,150 @@ Long totalCount = seClientCardMapper.checkCardAddrExists(cardAddr); return totalCount != null && totalCount > 0; } + + /** + * 鏍规嵁鎸囧畾鏉′欢鑾峰彇浜ゆ槗璁板綍 + * + * @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); + + 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(); + } +//鍏冭皨涓�鏈熼檰甯镐附闇�姹傛妸璧犻�侀噾棰濅笌鍏呭�奸噾棰濆垎寮�鏄剧ず + for (int i = list.size()-1; i >= 0 ; i--) { + Optional.ofNullable(list.get(i).getGift()).orElse(0d); + if (!list.get(i).getGift().equals(0d)){ + Double gift1 = list.get(i).getGift();//璧犻�侀噾棰� + String districtTitle = list.get(i).getDistrictTitle();//鍦板潃 + String clientNum = list.get(i).getClientNum();//鍐滄埛缂栧彿 + String clientName = list.get(i).getClientName();//鍐滄埛濮撳悕 + String phone = list.get(i).getPhone();//鎵嬫満鍙� + Date tradeTime = list.get(i).getTradeTime();//浜ゆ槗鏃堕棿 + String orderNumber = list.get(i).getOrderNumber();//璁㈠崟缂栧彿 + String cardNum = list.get(i).getCardNum();//鍗$紪鍙� + String idCard = list.get(i).getIdCard();//韬唤璇� + String cashierName = list.get(i).getCashierName();//鎿嶄綔浜� + Double money = list.get(i).getMoney();//浣欓 + Double cardCost1 = list.get(i).getCardCost();//璐崱閲戦 + Double tradeAmount = list.get(i).getTradeAmount();//浜ゆ槗閲戦 + Double waterCost1 = list.get(i).getWaterCost();//璐按閲戦 + Double refundAmount1 = list.get(i).getRefundAmount();//杩斿洖閲戦 + String paymentName = list.get(i).getPaymentName();//鏀粯鏂瑰紡 + String operateType = list.get(i).getOperateType();//涓氬姟绫诲瀷 + String cardState = list.get(i).getCardState();//鍗$姸鎬� + Long villageId = list.get(i).getVillageId();//鏉慽d + Long cashierId = list.get(i).getCashierId();//鏀堕摱鍛榠d + + list.get(i).setGift(0d); + list.get(i).setMoney(money-gift1); + + VoTradeDetails voTradeDetail = new VoTradeDetails(); + voTradeDetail.setDistrictTitle(districtTitle);//2 + voTradeDetail.setClientNum(clientNum);//2 + voTradeDetail.setClientName(clientName);//2 + voTradeDetail.setPhone(phone);//2 + voTradeDetail.setOperateType("璧犻��");//2 + voTradeDetail.setTradeTime(tradeTime);//2 + voTradeDetail.setWaterCost(0d);//2 + voTradeDetail.setCardCost(0d);//2 + voTradeDetail.setGift(gift1);//2 + voTradeDetail.setTradeAmount(0d);//2 + voTradeDetail.setRefundAmount(refundAmount1);//2 + voTradeDetail.setMoney(money);//寰�2 + voTradeDetail.setPaymentName("璧犻��");//2 + voTradeDetail.setOrderNumber(orderNumber);//2 + voTradeDetail.setCardNum(cardNum);//2 + voTradeDetail.setIdCard(idCard);//2 + voTradeDetail.setCashierName(cashierName);//2 + voTradeDetail.setCashierId(cashierId);//2 + voTradeDetail.setCardState(cardState);//2 + voTradeDetail.setVillageId(villageId);//2 + + list.add(voTradeDetail); + itemTotal = itemTotal + 1; + } + } + list.sort(Comparator.comparing(VoTradeDetails::getTradeTime)); + rsVo.obj = list; + rsVo.calculateAndSet(itemTotal, params); + + // 閬嶅巻浜ゆ槗鏄庣粏璁板綍锛屾眹鎬昏喘姘撮噾棰濄�佽喘鍗¢噾棰� + Double totalWaterCost = 0.0; + Double totalCardCost = 0.0; + 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("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; + } + + /** + * 鏍规嵁姘村崱缂栧彿鎴栨按鍗″湴鍧�鑾峰彇鎿嶄綔璁板綍鍙婁綑棰� + * @param cardNum + * @return + */ + public Map getOperateRecordsAndMoney(Long cardNum, String cardAddr) { + + List<Map<String, Object>> list = Optional.ofNullable(seClientCardMapper.getOperateRecordsByCardNum(cardNum, cardAddr)).orElse(new ArrayList<>()); + Float mondy = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum, cardAddr)).orElse(0f); + Float amount = Optional.ofNullable(seClientCardMapper.sumRechargeByCardNum(cardNum, cardAddr)).orElse(0f); + + Map map = new HashMap(); + map.put("mondy", mondy); + map.put("amount", amount); + map.put("list", list); + return map; + } } -- Gitblit v1.8.0