jk-GitHub-coder 3 년 전
부모
커밋
9732baf357

+ 1 - 1
YijiaRestful/src/main/java/com/platform/yijia/controller/PayController.java

@@ -603,7 +603,7 @@ public class PayController {
                                 //生成记录
                                 payOrderService.insertStationBalanceExchange(stationBalanceChange);
                                 StationInfo s = new StationInfo();
-                                BigDecimal subtract = new BigDecimal(String.valueOf(stationInfos.getBalance())).subtract(new BigDecimal(amt));
+                                BigDecimal subtract = new BigDecimal(String.valueOf(stationInfos.getBalance())).subtract(new BigDecimal(infoMap.get("sellAmt").toString()));
                                 s.setBalance(subtract.doubleValue());
                                 //更新油站余额
                                 stationService.updateStationBalance(s);

+ 37 - 30
YijiaRestful/src/main/java/com/platform/yijia/controller/PayOrderController.java

@@ -171,13 +171,16 @@ public class PayOrderController {
                         resultMap.put("oilsCardFlag", payOrderResultInfo.getOilsCardFlag());
                         resultMap.put("discountAmt", payOrderResultInfo.getDiscountAmt());    //优惠金额
                         resultMap.put("amt", payOrderResultInfo.getAmt());                   //实收价格
+                        resultMap.put("discountPrice", payOrderResultInfo.getDiscountPrice());
                         if(payOrderRequest.getIsLngFlagGroup() !=null && payOrderRequest.getIsLngFlagGroup().equals("1")){
                             payOrder.setSellAmt(Double.valueOf(payOrderResultInfo.getSellAmt()));
                             payOrder.setSellDiscountAmt(Double.valueOf(payOrderResultInfo.getSellDiscountAmt()));
+                            payOrder.setSellOilPrice(Double.valueOf(payOrderResultInfo.getSellPrice()));
+                            payOrder.setDriverOilPrice(Double.valueOf(payOrderResultInfo.getDiscountPrice()));
+                            //resultMap.put("discountPrice", payOrderResultInfo.getDiscountPrice());
                         }
                         resultMap.put("receivableAmt", payOrderResultInfo.getReceivableAmt());         //应收价格
                         resultMap.put("oilLiters", payOrderResultInfo.getOilLiters());
-                        resultMap.put("discountPrice", payOrderResultInfo.getDiscountPrice());
                         resultMap.put("amt_dzk", payOrderResultInfo.getDzkAmt());
                         resultMap.put("discountAmt_dzk", payOrderResultInfo.getDzkDiscountAmt());   //电子卡优惠金额
                         resultMap.put("balance", payOrderResultInfo.getBalance());               //电子卡余额
@@ -297,15 +300,15 @@ public class PayOrderController {
         BigDecimal discountAmt = new BigDecimal(0);     //油站销售价后优惠金额
         BigDecimal sellDiscountAmt = new BigDecimal(0); //油站销售价后优惠金额
         BigDecimal dzkDiscountAmt = new BigDecimal(0);  //电子卡优惠金额
-        BigDecimal amt = new BigDecimal(0);             //司机价后支付金额
+        BigDecimal amt = receivableAmt;             //司机价后支付金额
         BigDecimal sellAmt = new BigDecimal(0);         //油站结算价支付金额
         BigDecimal discountPrice = oilPrice;                //司机销售价
         BigDecimal sellPrice = discountPrice;              //油站销售价
         //加油升数
         oilLiters = receivableAmt.divide(oilPrice,2, BigDecimal.ROUND_HALF_UP);
-        if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
-            oilLiters = receivableAmt.divide(oilPrice,2, BigDecimal.ROUND_UP);
-        }
+//        if(!oilLiters.toString().substring(oilLiters.toString().indexOf(".") + 1).equals("00")){
+//            oilLiters = receivableAmt.divide(oilPrice,2, BigDecimal.ROUND_UP);
+//        }
         // settlementType:结算价类型(1.直降,2.折扣);  settlementPrice:结算价;  driverPrice:司机价;
         String settlementType = params.get("settlementType").toString();
         if(params.containsKey("settlementType") && params.get("settlementType") !=null && params.get("settlementType").toString() !=""){
@@ -313,17 +316,21 @@ public class PayOrderController {
                 case "1":   //直降
                     //优惠价(销售价)
                     if(params.containsKey("settlementPrice") && params.get("settlementPrice").toString() !=null && params.get("settlementPrice").toString() !=""){
-                        discountPrice = oilPrice.subtract(new BigDecimal(params.get("settlementPrice").toString()));
-                        discountAmt = discountPrice.multiply(oilLiters);
-                        discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        sellPrice = oilPrice.subtract(new BigDecimal(params.get("settlementPrice").toString()));
+                        sellAmt = new BigDecimal(params.get("settlementPrice").toString()).multiply(oilLiters);
+                        sellDiscountAmt = receivableAmt.subtract(sellAmt);
+                        sellDiscountAmt = sellDiscountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        //sellPrice = sellPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
                     }
                     break;
                 case "2":   //折扣
                     //优惠价(销售价)
                     if(params.containsKey("settlementPrice") && params.get("settlementPrice").toString() !=null && params.get("settlementPrice").toString() !=""){
-                        discountPrice = oilPrice.multiply(new BigDecimal(params.get("settlementPrice").toString())).divide(new BigDecimal("100"));
-                        discountAmt = discountPrice.multiply(oilLiters);
-                        discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        sellPrice = oilPrice.multiply(new BigDecimal(params.get("settlementPrice").toString())).divide(new BigDecimal("100"));
+                        sellAmt =sellPrice.multiply(oilLiters);
+                        sellDiscountAmt = receivableAmt.subtract(sellAmt);
+                        sellDiscountAmt = sellDiscountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+                        //sellPrice = sellPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
                     }
                     break;
             }
@@ -331,29 +338,29 @@ public class PayOrderController {
 
         if(params.containsKey("driverPrice") && params.get("driverPrice").toString() !=null && params.get("driverPrice").toString() !=""){
             //司机价
-            sellPrice = discountPrice.multiply(new BigDecimal(params.get("driverPrice").toString())).divide(new BigDecimal("100"));
-            sellDiscountAmt = sellPrice.multiply(oilLiters);
-            sellDiscountAmt = sellDiscountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+            discountPrice = sellPrice.multiply(new BigDecimal(params.get("driverPrice").toString())).divide(new BigDecimal("100"));
+            amt = discountPrice.multiply(oilLiters);    //二次折扣优惠金额
+            discountAmt = receivableAmt.subtract(amt);
+            discountAmt = discountAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+            discountPrice = discountPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
         }
-        sellAmt = receivableAmt.subtract(sellDiscountAmt);  //司机价实收金额
-        sellAmt =sellAmt.signum() == -1 ? new BigDecimal("0.01"): sellAmt;
-        amt = receivableAmt.subtract(discountAmt);  //销售价实收金额
-        amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt;
-        //销售价
-        discountPrice = oilLiters.equals(new BigDecimal("0.00")) ? discountPrice : amt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
-        //司机价
-        sellPrice = oilLiters.equals(new BigDecimal("0.00")) ? sellPrice : sellAmt.divide(oilLiters, 2, BigDecimal.ROUND_HALF_UP);
+        //sellAmt = receivableAmt.subtract(sellDiscountAmt);                      //销售价实收金额  = 应收金额-销售价优惠金额
+        sellAmt =sellAmt.signum() == -1 ? new BigDecimal("0.01"): sellAmt.setScale(2, BigDecimal.ROUND_HALF_UP);
+        //amt = receivableAmt.subtract(discountAmt).subtract(sellDiscountAmt);   //司机价实收金额 = 应收金额-司机价优惠金额-销售价优惠金额
+        amt =amt.signum() == -1 ? new BigDecimal("0.01"): amt.setScale(2, BigDecimal.ROUND_HALF_UP);
+
         payOrderResultInfo.setReceivableAmt(receivableAmt.toString());  //应收金额
-        payOrderResultInfo.setOilPrice(oilPrice.toString());            //油机价
-        payOrderResultInfo.setAmt(amt.toString());                      //销售价后时候金额
-        payOrderResultInfo.setDiscountPrice(discountPrice.toString());  //销售价
-        payOrderResultInfo.setDiscountAmt(discountAmt.toString());      //销售价后优惠金额
+        payOrderResultInfo.setOilLiters(oilLiters.toString());          //加油升数
 
-        payOrderResultInfo.setSellAmt(sellAmt.toString());                      //司机价后支付金额
-        payOrderResultInfo.setSellPrice(sellPrice.toString());                  //司机价
-        payOrderResultInfo.setSellDiscountAmt(sellDiscountAmt.toString());      //司机价后优惠金额
+        payOrderResultInfo.setOilPrice(oilPrice.toString());            //油机价
+        payOrderResultInfo.setAmt(amt.toString());                      //司机价后时候金额
+        payOrderResultInfo.setDiscountPrice(discountPrice.toString());  //司机价
+        payOrderResultInfo.setDiscountAmt(discountAmt.toString());      //司机价后优惠金额
 
-        payOrderResultInfo.setOilLiters(oilLiters.toString());          //加油升数
+        payOrderResultInfo.setSellAmt(sellDiscountAmt.toString());                      //销售价后支付金额
+        sellPrice.setScale(2, BigDecimal.ROUND_HALF_UP);               //销售价
+        payOrderResultInfo.setSellPrice(sellPrice.toString());                  //销售价
+        payOrderResultInfo.setSellDiscountAmt(sellAmt.toString());      //销售价后优惠金额
 
         //LNG加气平台没有电子卡功能:此下参数无用用作填充参数值 0:代表否;4:代表LNG油品
         payOrderResultInfo.setDzkAmt(amt.toString());                   //电子卡支付金额

+ 3 - 1
YijiaRestful/src/main/java/com/platform/yijia/pojo/PayOrder.java

@@ -88,8 +88,10 @@ public class PayOrder implements Serializable {
     private String deviceNo;
 
     //LNG加气平台参数
-    private Double sellAmt;
+    private Double sellOilPrice;        //销售价
+    private Double sellAmt;             //销售金额
     private Double sellDiscountAmt;     //销售价后优惠金额
+    private Double driverOilPrice;      //司机价
     private String isLngFlagGroup;
 
 }

+ 18 - 0
YijiaRestful/src/main/resources/mapper/PayOrderMapper.xml

@@ -8,6 +8,10 @@
     <result column="oil_gun"                jdbcType="VARCHAR"   property="oilGun" />
     <result column="oil_name"               jdbcType="VARCHAR"   property="oilName" />
     <result column="oil_pirce"              jdbcType="VARCHAR"   property="oilPirce" />
+    <result column="sell_oil_price"         jdbcType="DOUBLE"   property="sellOilPrice" />
+    <result column="driver_oil_price"       jdbcType="DOUBLE"   property="driverOilPrice" />
+
+
     <result column="consumer_id"            jdbcType="INTEGER"   property="consumerId" />
     <result column="consumer"               jdbcType="VARCHAR"   property="consumer" />
     <result column="amt"                    jdbcType="DOUBLE"    property="amt" />
@@ -591,6 +595,12 @@
       <if test="oilPirce != null">
         oil_pirce,
       </if>
+      <if test="sellOilPrice != null">
+        sell_oil_price,
+      </if>
+      <if test="driverOilPrice != null">
+        driver_oil_price,
+      </if>
       <if test="consumerId != null">
         consumer_id,
       </if>
@@ -722,6 +732,12 @@
       <if test="oilPirce != null">
         #{oilPirce,jdbcType=DOUBLE},
       </if>
+        <if test="sellOilPrice != null">
+            #{sellOilPrice,jdbcType=DOUBLE},
+        </if>
+        <if test="driverOilPrice != null">
+            #{driverOilPrice,jdbcType=DOUBLE},
+        </if>
       <if test="consumerId != null">
         #{consumerId,jdbcType=INTEGER},
       </if>
@@ -1006,6 +1022,8 @@
         A.dzk_amt               AS dzkAmt,
         A.order_type 			AS orderType,
         A.oil_pirce             AS oilPirce,
+        A.sell_oil_price        AS sellOilPrice,
+        A.driver_oil_price      AS driverOilPrice,
         A.receivable_amt        AS receivableAmt,
         A.discount_amt          AS discountAmt,
         A.created_date          AS createdDate,