pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCardOperateMapper.java
@@ -11,13 +11,13 @@ /** * @author ZhuBaoMin * @date 2024-01-18 19:28 * @LastEditTime 2024-01-18 19:28 * @date 2024-02-02 16:00 * @LastEditTime 2024-02-02 16:00 * @Description */ @Mapper public interface SeCardOperateMapper extends BaseMapper { public interface SeCardOperateMapper extends BaseMapper<SeCardOperate> { int deleteByPrimaryKey(Long id); int insert(SeCardOperate record); @@ -57,14 +57,8 @@ * @param params * @return */ List<VoTransaction> getTransactions(Map<?, ?> params); /** * 根据指定条件获取购水汇总和购卡汇总,获取交易明细使用 * @param params * @return */ Map getTransactionSums(Map<?, ?> params); /*List<VoTransaction> getTransactions(Map<?, ?> params);*/ List<VoTradeDetails> getTransactions(Map<?, ?> params); /** * 根据指定条件获取交易统计记录数 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCardOperate.java
@@ -17,7 +17,7 @@ /** * @author ZhuBaoMin * @date 2024-01-18 19:10 * @LastEditTime 2024-01-18 19:10 * @LastEditTime 2024-02-02 16:00 * @Description */ @@ -96,6 +96,13 @@ private Float gift; /** * 返还金额;补扣操作时返还的金额 */ @Schema(description = "返还金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED) @Length(message = "返还金额不小于{min}", min = 0) private Float refundAmount; /** * 非交易金额;补卡金额、补扣金额、剩余金额(解锁) */ @Schema(description = "非交易金额", requiredMode = Schema.RequiredMode.NOT_REQUIRED) pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
@@ -35,11 +35,14 @@ @Schema(title = "充值金额") private Float amount; @Schema(title = "返回金额") private Float refundAmount; @Schema(title = "充值后金额") private Float afterRecharge; @Schema(title = "支付方式") private Integer paymentId; private String paymentName; @Schema(title = "水价") private Float price; pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoTradeDetails.java
@@ -20,6 +20,15 @@ public class VoTradeDetails implements BaseEntity { private static final long serialVersionUID = 202402012040001L; @Schema(title = "收银员ID") private String cashierId; @Schema(title = "区划名称串") private String districtTitle; @Schema(title = "村庄ID") private String villageId; @Schema(title = "农户姓名") private String clientName; @@ -35,11 +44,23 @@ @Schema(title = "交易金额") private Double tradeAmount; @Schema(title = "购水金额") private Double waterCost; @Schema(title = "购卡金额") private Double cardCost; @Schema(title = "赠送金额") private Double gift; @Schema(title = "返回金额") private Double refundAmount; @Schema(title = "付款方式") private String paymentName; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @Schema(title = "交易时间") private Date tradeDate; private Date tradeTime; } pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCardOperateMapper.xml
@@ -13,8 +13,9 @@ <result column="price" jdbcType="FLOAT" property="price" /> <result column="card_cost" jdbcType="INTEGER" property="cardCost" /> <result column="gift" jdbcType="FLOAT" property="gift" /> <result column="refund_amount" jdbcType="FLOAT" property="refundAmount" /> <result column="no_trade_amount" jdbcType="FLOAT" property="noTradeAmount" /> <result column="operate_type_id" jdbcType="BIGINT" property="operateType" /> <result column="operate_type" jdbcType="TINYINT" property="operateType" /> <result column="payment_id" jdbcType="BIGINT" property="paymentId" /> <result column="remarks" jdbcType="VARCHAR" property="remarks" /> <result column="operator" jdbcType="BIGINT" property="operator" /> @@ -23,7 +24,7 @@ <sql id="Base_Column_List"> <!--@mbg.generated--> id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift, no_trade_amount, operate_type_id, payment_id, remarks, `operator`, operate_dt refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> <!--@mbg.generated--> @@ -42,15 +43,15 @@ insert into se_card_operate (id, card_id, client_id, money, system_balance, trade_amount, price, card_cost, gift, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt ) refund_amount, no_trade_amount, operate_type, payment_id, remarks, `operator`, operate_dt) values (#{id,jdbcType=BIGINT}, #{cardId,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, #{systemBalance,jdbcType=FLOAT}, #{tradeAmount,jdbcType=FLOAT}, #{price,jdbcType=FLOAT}, #{cardCost,jdbcType=INTEGER}, #{gift,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=BIGINT}, #{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP} ) #{refundAmount,jdbcType=FLOAT}, #{noTradeAmount,jdbcType=FLOAT}, #{operateType,jdbcType=TINYINT}, #{paymentId,jdbcType=BIGINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operateDt,jdbcType=TIMESTAMP}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCardOperate"> <!--@mbg.generated--> @@ -83,11 +84,14 @@ <if test="gift != null"> gift, </if> <if test="refundAmount != null"> refund_amount, </if> <if test="noTradeAmount != null"> no_trade_amount, </if> <if test="operateType != null"> operate_type_id, operate_type, </if> <if test="paymentId != null"> payment_id, @@ -130,11 +134,14 @@ <if test="gift != null"> #{gift,jdbcType=FLOAT}, </if> <if test="refundAmount != null"> #{refundAmount,jdbcType=FLOAT}, </if> <if test="noTradeAmount != null"> #{noTradeAmount,jdbcType=FLOAT}, </if> <if test="operateType != null"> #{operateType,jdbcType=BIGINT}, #{operateType,jdbcType=TINYINT}, </if> <if test="paymentId != null"> #{paymentId,jdbcType=BIGINT}, @@ -178,11 +185,14 @@ <if test="gift != null"> gift = #{gift,jdbcType=FLOAT}, </if> <if test="refundAmount != null"> refund_amount = #{refundAmount,jdbcType=FLOAT}, </if> <if test="noTradeAmount != null"> no_trade_amount = #{noTradeAmount,jdbcType=FLOAT}, </if> <if test="operateType != null"> operate_type_id = #{operateType,jdbcType=BIGINT}, operate_type = #{operateType,jdbcType=TINYINT}, </if> <if test="paymentId != null"> payment_id = #{paymentId,jdbcType=BIGINT}, @@ -210,8 +220,9 @@ price = #{price,jdbcType=FLOAT}, card_cost = #{cardCost,jdbcType=INTEGER}, gift = #{gift,jdbcType=FLOAT}, refund_amount = #{refundAmount,jdbcType=FLOAT}, no_trade_amount = #{noTradeAmount,jdbcType=FLOAT}, operate_type_id = #{operateType,jdbcType=BIGINT}, operate_type = #{operateType,jdbcType=TINYINT}, payment_id = #{paymentId,jdbcType=BIGINT}, remarks = #{remarks,jdbcType=VARCHAR}, `operator` = #{operator,jdbcType=BIGINT}, @@ -226,8 +237,10 @@ FROM se_card_operate ope INNER JOIN se_client_card card ON ope.card_id = card.id INNER JOIN se_client cli ON ope.client_id = cli.id INNER JOIN ba_user us ON ope.operator = us.id Left JOIN se_payment_method pay ON ope.payment_id = pay.id <where> AND ope.operate_type = 2 AND ope.operate_type in(2, 5) <if test = "clientName != null and clientName !=''"> AND cli.name like CONCAT('%',#{clientName},'%') </if> @@ -256,18 +269,22 @@ CAST(ope.id AS char) AS id , cli.name AS clientName, cli.clientNum, card.cardNum, ope.trade_amount AS amount, (ope.money + ope.trade_amount) AS afterRecharge, ope.payment_id, CAST(card.cardNum AS char) AS cardNum, IFNULL(ope.trade_amount, 0) AS amount, IFNULL(ope.refund_amount, 0) AS refundAmount, (IFNULL(ope.money, 0) + IFNULL(ope.trade_amount, 0)) AS afterRecharge, -- ope.payment_id AS paymentId, pay.name AS paymentName, ope.price, (SELECT `name` FROM ba_user WHERE id = ope.operator) AS operator, us.name AS operator, ope.operate_dt FROM se_card_operate ope INNER JOIN se_client_card card ON ope.card_id = card.id INNER JOIN se_client cli ON ope.client_id = cli.id INNER JOIN ba_user us ON ope.operator = us.id Left JOIN se_payment_method pay ON ope.payment_id = pay.id <where> AND ope.operate_type = 2 AND ope.operate_type in(2, 5) <if test = "clientName != null and clientName !=''"> AND cli.name like CONCAT('%',#{clientName},'%') </if> @@ -300,104 +317,46 @@ <select id="getTransactionRecordCount" parameterType="java.util.Map" resultType="java.lang.Long"> SELECT COUNT(*) AS recordCount FROM se_card_operate ope INNER JOIN se_client cli ON ope.client_id = cli.id INNER JOIN se_client_card card ON ope.card_id = card.id INNER JOIN ba_user user ON ope.operator = user.id INNER JOIN se_payment_method pay ON ope.payment_id = pay.id FROM v_trade_details <where> AND ope.operate_type IN(1,2,3,4) <if test = "villageId != null and villageId > 0"> AND cli.villageId = ${villageId} </if> <if test = "cardNum != null and cardNum >0"> AND card.cardNum = ${cardNum} AND villageId = ${villageId} </if> <if test = "operateTimeStart != null and operateTimeStop != null"> AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop} AND tradeTime BETWEEN #{operateTimeStart} AND #{operateTimeStop} </if> <if test = "cashierId != null and cashierId > 0"> AND cashierId = ${cashierId} </if> <if test = "tradeTime != null"> AND tradeTime = #{tradeTime} </if> </where> </select> <!--根据指定条件获取交易记录--> <select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTransaction"> SELECT ope.id AS orderNumber, cli.villageId, cli.districtTitle, cli.clientNum, cli.`name`, card.cardNum, cli.idCard, cli.phone, (CASE operate_type WHEN 1 THEN '开卡' WHEN 2 THEN '充值' WHEN 3 THEN '销卡' WHEN 4 THEN '补卡' END) AS operateType, ope.operate_dt AS operateTime, IFNULL(ope.money, 0) AS money, IFNULL(ope.trade_amount, 0) AS waterCost, IFNULL(ope.gift, 0) AS gift, IFNULL(ope.card_cost, 0) AS cardCost, pay.`name` paymentMethod, user.name AS operatorName FROM se_card_operate ope INNER JOIN se_client cli ON ope.client_id = cli.id INNER JOIN se_client_card card ON ope.card_id = card.id INNER JOIN ba_user user ON ope.operator = user.id INNER JOIN se_payment_method pay ON ope.payment_id = pay.id <select id="getTransactions" resultType="com.dy.pipIrrGlobal.voSe.VoTradeDetails"> SELECT * FROM v_trade_details <where> AND ope.operate_type IN(1,2,3,4) <if test = "villageId != null and villageId > 0"> AND cli.villageId = ${villageId} </if> <if test = "cardNum != null and cardNum >0"> AND card.cardNum = ${cardNum} AND villageId = ${villageId} </if> <if test = "operateTimeStart != null and operateTimeStop != null"> AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop} AND tradeTime BETWEEN #{operateTimeStart} AND #{operateTimeStop} </if> <if test = "cashierId != null and cashierId > 0"> AND user.id = ${cashierId} AND cashierId = ${cashierId} </if> </where> ORDER BY ope.operate_dt ORDER BY tradeTime <if test="pageCurr != null and pageSize != null"> LIMIT ${pageCurr}, ${pageSize} </if> </select> <!--根据指定条件获取购水汇总和购卡汇总,获取交易明细使用--> <select id="getTransactionSums" resultType="java.util.Map"> SELECT IFNULL(SUM(trade_amount),0) AS waterCost, IFNULL(SUM(card_cost),0) AS cardCost FROM se_card_operate ope INNER JOIN se_client cli ON ope.client_id = cli.id INNER JOIN se_client_card card ON ope.card_id = card.id INNER JOIN ba_user user ON ope.operator = user.id INNER JOIN se_payment_method pay ON ope.payment_id = pay.id <where> AND ope.operate_type IN(1,2,3,4) <if test = "villageId != null and villageId > 0"> AND cli.villageId = ${villageId} </if> <if test = "cardNum != null and cardNum >0"> AND card.cardNum = ${cardNum} </if> <if test = "operateTimeStart != null and operateTimeStop != null"> AND ope.operate_dt BETWEEN #{operateTimeStart} AND #{operateTimeStop} </if> </where> </select> pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeGeneralMapper.xml
@@ -338,10 +338,15 @@ AND cashierId = ${cashierId} </if> <if test = "tradeDate != null"> AND tradeDate = #{tradeDate} <if test = "tradeTime != null"> AND tradeTime = #{tradeTime} </if> </where> ORDER BY tradeDate ORDER BY tradeTime <trim prefix="limit " > <if test="start != null and count != null"> #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} </if> </trim> </select> </mapper> pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateCtrl.java
@@ -10,7 +10,10 @@ import com.dy.pipIrrGlobal.pojoSe.SeClientCard; import com.dy.pipIrrGlobal.util.AmountToChinese; import com.dy.pipIrrGlobal.util.Constant; import com.dy.pipIrrGlobal.voSe.*; import com.dy.pipIrrGlobal.voSe.VoActiveCard; import com.dy.pipIrrGlobal.voSe.VoActiveCardNew; import com.dy.pipIrrGlobal.voSe.VoRecharge; import com.dy.pipIrrGlobal.voSe.VoReissueCard; import com.dy.pipIrrSell.cardOperate.converter.RechargeDtoMapper; import com.dy.pipIrrSell.cardOperate.dto.*; import com.dy.pipIrrSell.cardOperate.enums.OperateTypeENUM; @@ -666,7 +669,8 @@ seCardOperate.setCardId(cardId); seCardOperate.setClientId(clientId); seCardOperate.setMoney(money); seCardOperate.setNoTradeAmount(refund); //seCardOperate.setNoTradeAmount(refund); seCardOperate.setRefundAmount(refund); seCardOperate.setOperateType(OperateTypeENUM.REFUND.getCode()); seCardOperate.setRemarks(remarks); seCardOperate.setOperator(operator); pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -1,5 +1,6 @@ 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; @@ -8,6 +9,7 @@ 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.*; @@ -48,6 +50,9 @@ @Autowired private ClientCardSv clientCardSv; @Autowired private SeGeneralMapper seGeneralMapper; /** @@ -235,6 +240,7 @@ * @return */ public Map getTransactions(QoTransaction vo){ DecimalFormat df = new DecimalFormat("0.00"); // 补齐查询时间 String operateTimeStart = vo.operateTimeStart; String operateTimeStop = vo.operateTimeStop; @@ -250,38 +256,33 @@ // 生成查询参数 Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo) ; // 获取汇总的购水金额、购卡金额 Float waterCost = 0f; Float cardCost = 0f; Map map_sum = Optional.ofNullable(seCardOperateMapper.getTransactionSums(params)).orElse(new HashMap()); if(map_sum.size() > 0) { waterCost = Float.parseFloat(map_sum.get("waterCost").toString()); cardCost = Float.parseFloat(map_sum.get("cardCost").toString()); // 获取符合条件的记录数 Long itemTotal = Optional.ofNullable(seCardOperateMapper.getTransactionRecordCount(params)).orElse(0L); List<VoTradeDetails> list = seCardOperateMapper.getTransactions(params); if(list.size() == 0) { return new HashMap(); } // 获取符合条件的记录数 Long itemTotal = seCardOperateMapper.getTransactionRecordCount(params); // 遍历交易明细记录,汇总购水金额、购卡金额 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; } 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<VoTransaction> lit = seCardOperateMapper.getTransactions(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", lit); map_record.put("list", list); Map map_result = new HashMap(); map_result.put("waterCost", waterCost); map_result.put("cardCost", cardCost); map_result.put("waterCost", df.format(totalWaterCost)); map_result.put("cardCost", df.format(totalCardCost)); map_result.put("records", map_record); return map_result; pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/qo/QoTransaction.java
@@ -22,8 +22,8 @@ @Schema(description = "村ID") public Long villageId; @Schema(description = "水卡编号") public Long cardNum; //@Schema(description = "水卡编号") //public Long cardNum; @Schema(description = "交易查询起始时间") public String operateTimeStart; @@ -33,4 +33,6 @@ @Schema(description = "收银员ID") public Long cashierId; } pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/GeneralSv.java
@@ -128,7 +128,7 @@ // 接收传入参数:操作日期、收银员ID JSONArray array_paymentSums = new JSONArray(); String tradeDate = vo.getTradeDate(); String tradeDate = vo.getTradeTime(); Long cashierId = vo.cashierId; // 分别计算指定日期、指定收银员、指定支付方式实收金额 @@ -216,9 +216,12 @@ 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("totalTradeAmount", df.format(totalTradeAmount)); map_result.put("records", map_record); pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/general/qo/QoToAudit.java
@@ -20,7 +20,7 @@ @Schema(name = "待审核交易汇总查询条件") public class QoToAudit extends QueryConditionVo { @Schema(description = "交易时间") public String tradeDate; public String tradeTime; @Schema(description = "收银员ID") public Long cashierId;