|
@@ -86,6 +86,8 @@ public class PayOrderController {
|
|
|
payOrderRequest.setCustomerName(appUserInfos.getBlogNickName()); //昵称
|
|
|
payOrderRequest.setGroupId(stationInfos.getGroupId()); //集团ID
|
|
|
payOrderRequest.setLabelFlag(stationInfos.getLabelFlag()); //油站是否开启标签功能
|
|
|
+ payOrderRequest.setIsLngFlagGroup(stationInfos.getIsLngFlagGroup()); //该集团是否为LNG第三方平台商:0,否;1,是;
|
|
|
+
|
|
|
|
|
|
payOrder.setConsumer(appUserInfos.getBlogNickName()); //昵称
|
|
|
payOrder.setConsumerId(appUserInfos.getUserId()); //用户id
|
|
@@ -169,6 +171,11 @@ public class PayOrderController {
|
|
|
resultMap.put("oilsCardFlag", payOrderResultInfo.getOilsCardFlag());
|
|
|
resultMap.put("discountAmt", payOrderResultInfo.getDiscountAmt()); //优惠价格
|
|
|
resultMap.put("amt", payOrderResultInfo.getAmt()); //实收价格
|
|
|
+ if(payOrderRequest.getIsLngFlagGroup() !=null && payOrderRequest.getIsLngFlagGroup().equals("1")){
|
|
|
+ payOrder.setDriverAmt(Double.valueOf(payOrderResultInfo.getDriverAmt()));
|
|
|
+ //此处amt赋值司机价支付金额原因:前端使用amt作为实际支付金额,返给前端司机价实收金额
|
|
|
+ resultMap.put("amt", payOrderResultInfo.getDriverAmt());
|
|
|
+ }
|
|
|
resultMap.put("receivableAmt", payOrderResultInfo.getReceivableAmt()); //应收价格
|
|
|
resultMap.put("oilLiters", payOrderResultInfo.getOilLiters());
|
|
|
resultMap.put("discountPrice", payOrderResultInfo.getDiscountPrice());
|
|
@@ -228,20 +235,26 @@ public class PayOrderController {
|
|
|
params.put("cardOilsType", payOrderRequest.getCardOilsType());
|
|
|
params.put("customerName", customerName);
|
|
|
params.put("userPhone", userPhone);
|
|
|
-// integralRuleFlagGroup; //集团积分规则是否共享
|
|
|
-// integralFlagGroup; //集团是否开启积分功能
|
|
|
-// cardRuleFlagGroup; //集团是否共享电子卡充值规则
|
|
|
-// cardEnabledFlagGroup; //集团是否开启电子卡
|
|
|
- params.put("integralRuleFlagGroup", payOrderRequest.getIntegralRuleFlagGroup());
|
|
|
- params.put("integralFlagGroup", payOrderRequest.getIntegralFlagGroup());
|
|
|
- params.put("cardRuleFlagGroup", payOrderRequest.getCardRuleFlagGroup());
|
|
|
- params.put("cardEnabledFlagGroup", payOrderRequest.getCardEnabledFlagGroup());
|
|
|
+ params.put("integralRuleFlagGroup", payOrderRequest.getIntegralRuleFlagGroup()); // integralRuleFlagGroup; //集团积分规则是否共享
|
|
|
+ params.put("integralFlagGroup", payOrderRequest.getIntegralFlagGroup()); // integralFlagGroup; //集团是否开启积分功能
|
|
|
+ params.put("cardRuleFlagGroup", payOrderRequest.getCardRuleFlagGroup()); // cardRuleFlagGroup; //集团是否共享电子卡充值规则
|
|
|
+ params.put("cardEnabledFlagGroup", payOrderRequest.getCardEnabledFlagGroup()); // cardEnabledFlagGroup; //集团是否开启电子卡
|
|
|
+
|
|
|
+ if(payOrderRequest.getIsLngFlagGroup() !=null && payOrderRequest.getIsLngFlagGroup().equals("1")){
|
|
|
+ // isLngFlagGroup 表示该集团是否为LNG平台加气:0,否;1,是;
|
|
|
+ // settlementType:结算价类型(1.直降,2.折扣); settlementPrice:结算价; driverPrice:司机价;
|
|
|
+ if(result.containsKey("settlementType") && result.get("settlementType") !=null && result.get("settlementType").toString() !=""){
|
|
|
+ params.put("settlementType", result.get("settlementType").toString());
|
|
|
+ }
|
|
|
+ if(result.containsKey("settlementPrice") && result.get("settlementPrice") !=null && result.get("settlementPrice").toString() !=""){
|
|
|
+ params.put("settlementPrice", result.get("settlementPrice").toString());
|
|
|
+ }
|
|
|
+ if(result.containsKey("driverPrice") && result.get("driverPrice") !=null && result.get("driverPrice").toString() !=""){
|
|
|
+ params.put("driverPrice", result.get("driverPrice").toString());
|
|
|
+ }
|
|
|
+ payOrderResultInfo = this.calculateLngGroupStaDiscount(params);
|
|
|
|
|
|
-// if(payOrderRequest.getLabelFlag() !=null && payOrderRequest.getLabelFlag().equals("1") && payOrderRequest.getLabelId() !=null && payOrderRequest.getLabelId() !=""){
|
|
|
-// //如果前端传来labelId 表示使用一码一标签:标签支付码
|
|
|
-// params.put("labelId", payOrderRequest.getLabelId());
|
|
|
-// payOrderResultInfo = this.calculateLabelDiscount(params);
|
|
|
-// }else {
|
|
|
+ }else {
|
|
|
//按照正常优惠计算
|
|
|
CustomerLabel customerLabel = new CustomerLabel();
|
|
|
customerLabel.setPhone(payOrderRequest.getCustomerPhone());
|
|
@@ -271,10 +284,84 @@ public class PayOrderController {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- //}
|
|
|
+ }
|
|
|
return payOrderResultInfo;
|
|
|
}
|
|
|
|
|
|
+ //计算集团下站点LNG平台加气
|
|
|
+ public PayOrderResultInfo calculateLngGroupStaDiscount(Map<String ,Object> params){
|
|
|
+
|
|
|
+ PayOrderResultInfo payOrderResultInfo = new PayOrderResultInfo();
|
|
|
+ BigDecimal oilPrice = new BigDecimal(params.get("oilPrice").toString()); //油品价格
|
|
|
+ BigDecimal receivableAmt = new BigDecimal(params.get("receivableAmt").toString()); //应收金额
|
|
|
+ BigDecimal oilLiters = new BigDecimal("0.00"); //加油升数
|
|
|
+ BigDecimal discountAmt = new BigDecimal(0); //油站销售价后优惠金额
|
|
|
+ BigDecimal driverDiscountAmt = new BigDecimal(0); //油站司机价后优惠金额
|
|
|
+ BigDecimal dzkDiscountAmt = new BigDecimal(0); //电子卡优惠金额
|
|
|
+ BigDecimal amt = new BigDecimal(0); //油站结算价支付金额
|
|
|
+ BigDecimal driverAmt = new BigDecimal(0); //司机价后支付金额
|
|
|
+ BigDecimal discountPrice = oilPrice; //油站销售价
|
|
|
+ BigDecimal driverPrice = 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);
|
|
|
+ }
|
|
|
+ // settlementType:结算价类型(1.直降,2.折扣); settlementPrice:结算价; driverPrice:司机价;
|
|
|
+ String settlementType = params.get("settlementType").toString();
|
|
|
+ if(params.containsKey("settlementType") && params.get("settlementType") !=null && params.get("settlementType").toString() !=""){
|
|
|
+ switch (settlementType){
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ 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()));
|
|
|
+ discountAmt = discountPrice.multiply(oilLiters);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(params.containsKey("driverPrice") && params.get("driverPrice").toString() !=null && params.get("driverPrice").toString() !=""){
|
|
|
+ //司机价
|
|
|
+ driverPrice = discountPrice.multiply(new BigDecimal(params.get("driverPrice").toString()));
|
|
|
+ driverDiscountAmt = driverPrice.multiply(oilLiters);
|
|
|
+ }
|
|
|
+ driverAmt = receivableAmt.subtract(driverDiscountAmt); //司机价实收金额
|
|
|
+ driverAmt =driverAmt.signum() == -1 ? new BigDecimal("0.01"): driverAmt;
|
|
|
+ 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);
|
|
|
+ //司机价
|
|
|
+ driverPrice = oilLiters.equals(new BigDecimal("0.00")) ? driverPrice : driverAmt.divide(oilLiters, 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.setDriverAmt(driverAmt.toString()); //司机价后支付金额
|
|
|
+ payOrderResultInfo.setDriverPrice(driverPrice.toString()); //司机价
|
|
|
+ payOrderResultInfo.setDriverDiscountAmt(driverDiscountAmt.toString()); //司机价后优惠金额
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilLiters(oilLiters.toString()); //加油升数
|
|
|
+
|
|
|
+ payOrderResultInfo.setDzkAmt(amt.toString()); //电子卡支付金额
|
|
|
+ payOrderResultInfo.setDzkDiscountAmt(dzkDiscountAmt.toString()); //电子卡优惠金额
|
|
|
+
|
|
|
+ payOrderResultInfo.setOilsCardFlag("0");
|
|
|
+ payOrderResultInfo.setCardEnabledFlag("0");
|
|
|
+
|
|
|
+ return payOrderResultInfo;
|
|
|
+ }
|
|
|
+
|
|
|
//计算标签用户优惠
|
|
|
public PayOrderResultInfo calculateLabelDiscount(Map<String ,Object> params){
|
|
|
BigDecimal oilPrice = new BigDecimal(params.get("oilPrice").toString()); //油品价格
|