jk-GitHub-coder 4 yıl önce
ebeveyn
işleme
ee8f0ea3d4

+ 341 - 267
YijiaRestful/src/main/java/com/platform/yijia/controller/ElectronicMembershipCardController.java

@@ -288,9 +288,10 @@ public class ElectronicMembershipCardController {
                 String amt = resultMap.get("amt").toString();
                 String orderType = resultMap.get("orderType").toString();
                 String groupId = resultMap.get("groupId").toString();
+                String oilGun = resultMap.get("oilGun").toString();
 
                 CustomerCardUseRecord customerCardUseRecord = new CustomerCardUseRecord();  //电子会员卡插入消费记录
-                BigDecimal balance = null;                                                  //电子会员卡余额
+                BigDecimal balance = new BigDecimal("0.00");                                                  //电子会员卡余额
                 CustomerElectronicCard customerElectronicCard = new CustomerElectronicCard();
                 Oil oil = new Oil();
                 oil.setOilName(oilName);
@@ -436,37 +437,58 @@ public class ElectronicMembershipCardController {
                             }
                         }
                     }
-
-//                    StationPayManage stationPayManage = new StationPayManage();
-//                    stationPayManage.setStationId(Integer.valueOf(stationId));
-//                    StationPayManage stationPayManageInfo = stationService.selectStationPayManage(stationPayManage);
                     int integral =0;
                     //是否启用积分功能
                     StationInfo stationInfo = new StationInfo();
                     stationInfo.setStationId(Integer.valueOf(stationId));
                     StationInfo stationInfos = stationService.selectStationInfo(stationInfo);
                     if(stationInfos !=null && stationInfos.getIntegralFlag().equals("1")){
-                        //计算积分
                         CalculateIntegral calculateIntegral = new CalculateIntegral();
-                        calculateIntegral.setIntegralRuleFlag(stationInfos.getIntegralRuleFlag());
-                        calculateIntegral.setAmt(new BigDecimal(amt));
-                        calculateIntegral.setReceivableAmt(new BigDecimal(receivableAmt));
-                        calculateIntegral.setOilLiters(new BigDecimal(oilLiters));
-                        calculateIntegral.setOilName(oilName);
-                        calculateIntegral.setOilType(orderType);
-                        calculateIntegral.setStationId(Integer.valueOf(stationId));
-                        calculateIntegral.setUnionId(unionId);
-                        calculateIntegral.setOpenId(minaOpenid);   //小程序openId
-                        //计算积分且推送积分
-                        integral = calculateIntegralAndPushIntegral(calculateIntegral, customerManage);
+                        calculateIntegral.setCustomerGrade(customerManage.getGrade());                  //客户等级
+                        calculateIntegral.setIntegralRuleFlag(stationInfos.getIntegralRuleFlag());      //是否共享积分
+                        calculateIntegral.setAmt(new BigDecimal(amt));                                  //客户实收金额
+                        calculateIntegral.setReceivableAmt(new BigDecimal(receivableAmt));              //应收金额
+                        calculateIntegral.setOilLiters(new BigDecimal(oilLiters));                      //加油升数
+                        calculateIntegral.setOilName(oilName);                                          //油品名称
+                        calculateIntegral.setOilType(orderType);                                        //油类
+                        calculateIntegral.setStationId(Integer.valueOf(stationId));                     //油站ID
+                        calculateIntegral.setUnionId(unionId);                                          //客户UnionID
+                        calculateIntegral.setOpenId(minaOpenid);                                        //小程序openId
+                        CalculateIntegral calculateIntegralInfo = this.calculateIntegral(calculateIntegral);    //计算积分
+                        integral = calculateIntegralInfo.getIntegral(); //赋值积分
+                        CustomerPoints customerPoints = this.insertUserIntegral(calculateIntegralInfo); //插入客户积分信息
+                        this.pushIntegral(customerPoints);  //推送积分
                     }
                     resultData = ResultData.success(CodeMsg.SUCCESS);
-                    //打印小票
-                    //this.printReceipt(payOrder);
-                    //pos机打印小票
-                    payOrder.setIntegral(String.valueOf(integral));
-                    payOrder.setTransactionId(ordNo);
-                    this.posPrintReceipt(payOrder);
+                    Map map = new HashMap();
+                    map.put("stationId", stationId);
+                    map.put("oilGunNo", oilGun);
+                    List<Map> listDevices = stationOilGunService.getPrinterSnByStationIdAndOilGunNoList(map);
+                    if(listDevices !=null && listDevices.size() ==2){
+                        for(Map m : listDevices){
+                            if(m.get("deviceType").toString().equals("1")){
+                                //打印小票
+                                resultMap.put("sn", m.get("printerSn").toString());
+                                resultMap.put("printSetting", m.get("printSetting").toString());
+                                this.printReceipt(payOrder);
+                            }else {
+                                //pos机打印小票
+                                payOrder.setIntegral(String.valueOf(integral));
+                                this.posPrintReceipt(payOrder);
+                            }
+                        }
+                    }else if(listDevices !=null && listDevices.size() ==1){
+                        if(listDevices.get(0).get("deviceType").toString().equals("1")){
+                            //打印小票
+                            resultMap.put("sn", listDevices.get(0).get("printerSn").toString());
+                            resultMap.put("printSetting", listDevices.get(0).get("printSetting").toString());
+                            this.printReceipt(payOrder);
+                        }else {
+                            //POS机打印
+                            payOrder.setIntegral(String.valueOf(integral));
+                            this.posPrintReceipt(payOrder);
+                        }
+                    }
                 }else {
                     resultData=ResultData.error(CodeMsg.BALANCE_NOT_EENOUGH);
                 }
@@ -1101,72 +1123,61 @@ public class ElectronicMembershipCardController {
         return gson.toJson(resultData);
     }
 
-    /*
-     * 计算消费生成积分
-     * 注释:  1.判断油站配置的优惠类型
-     *        2.如果是等级直降则存在等级取对应等级的积分规则,否则按照其他优惠方式
-     */
-    public int calculateIntegralAndPushIntegral(CalculateIntegral calculateIntegral, CustomerManage customerManage){
+    //计算积分
+    public CalculateIntegral calculateIntegral(CalculateIntegral calculateIntegral){
         int integral =0;
-        //获取该油站的优惠方式
-        String discountPlanType = stationService.getStationDiscountWay(calculateIntegral.getStationId().toString());
         IntegralRule integralRule = new IntegralRule();
         integralRule.setStationId(calculateIntegral.getStationId());
-        integralRule.setEmptyDate(new Date());
         integralRule.setOilName(calculateIntegral.getOilName());
-        integralRule.setOilType(calculateIntegral.getOilType());
         //获取该油站的积分规则
         List<IntegralRule> integralRuleList = integralRuleService.getIntegralRule(integralRule);
         if(integralRuleList !=null && integralRuleList.size() >0){
             logger.info("该油站积分规则信息:" + integralRuleList.toString());
-            List<IntegralRuleDetail> integralRuleDetailList = integralRuleList.get(0).getIntegralRuleDetailList();
-            String currentTime = null;          //当前时间
-            String datePickerTime=null;         //活动时间
-            String[] datePickerTimeArray ={};
-            String integralActivity = integralRuleList.get(0).getIntegralActivity();
-            String integralProportion =null;
-            if(integralActivity !=null && integralActivity.equals("1")){
-                datePickerTime = integralRuleList.get(0).getDatePickerTime();
-                integralProportion = integralRuleList.get(0).getIntegralProportion();
-                if(datePickerTime.contains(",")){
-                    datePickerTimeArray = datePickerTime.split(",");
-                }else {
-                    datePickerTimeArray= new String[1];
-                    datePickerTimeArray[0] = datePickerTime;
+            Date emptyDate = integralRuleList.get(0).getEmptyDate();
+            //积分规则有效时间 为null时 表示永久有效
+            if(emptyDate ==null || emptyDate.compareTo(new Date()) == 1 || emptyDate.compareTo(new Date()) == 0){
+                List<IntegralRuleDetail> integralRuleDetailList = integralRuleList.get(0).getIntegralRuleDetailList();
+                String currentTime = null;          //当前时间
+                String datePickerTime=null;         //活动时间
+                String[] datePickerTimeArray ={};
+                String integralActivity = integralRuleList.get(0).getIntegralActivity();
+                String integralProportion =null;
+                if(integralActivity !=null && integralActivity.equals("1")){
+                    datePickerTime = integralRuleList.get(0).getDatePickerTime();
+                    integralProportion = integralRuleList.get(0).getIntegralProportion();
+                    if(datePickerTime.contains(",")){
+                        datePickerTimeArray = datePickerTime.split(",");
+                    }else {
+                        datePickerTimeArray= new String[1];
+                        datePickerTimeArray[0] = datePickerTime;
+                    }
                 }
-            }
-            if(integralRuleDetailList !=null && integralRuleDetailList.size() >0){
-                Calendar calendar = Calendar.getInstance();
-                calendar.setTime(new Date());   //获取当前时间
-                for (IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
-                    if(integralRuleDetail.getOilType().equals("1")){    //油品
-                        if (integralRuleDetail.getRuleType().equals("1")){  //按照实收金额
-                            if(calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 1 || calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 0){
+                if(integralRuleDetailList !=null && integralRuleDetailList.size() >0){
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(new Date());   //获取当前时间
+                    for (IntegralRuleDetail integralRuleDetail : integralRuleDetailList){
+                        if(!StringUtils.isNotBlank(integralRuleDetail.getRuleType()) && !StringUtils.isNotBlank(integralRuleDetail.getGread())){
+                            //等级和规则类型null为时表示非油品, 没有按照实收,应收,加油升数
+                            if (calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                 BigDecimal divide = null;
                                 BigDecimal multiply = null;
-                                //判断油站配置的优惠类型
-                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }else {
-                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }
-                                if(integralActivity !=null && integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
-                                    String datePicker = integralRuleList.get(0).getDatePicker();
+                                divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
+                                multiply = divide.multiply(integralRuleDetail.getIntegral());
+                                if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
+                                    String datePicker = integralRuleList.get(0).getDatePicker();    //获取日期类型
                                     switch (datePicker){
                                         case "1":   //  1.按周来
                                             int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
                                             day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
                                             currentTime = String.valueOf(day_Week);
                                             break;
-                                        case "2":   //  2.每月的多少号
+                                        case "2":   //  2.每月的 多少号
                                             int day_month = calendar.get(Calendar.DAY_OF_MONTH);
                                             day_month = day_month-1;        //减一原因:数据库存的下标从零开始
                                             currentTime = String.valueOf(day_month); //当前时间
                                             break;
                                         case "3":   //  3.固定日期
-                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
                                             break;
                                     }
                                     for (String s : datePickerTimeArray){
@@ -1176,248 +1187,311 @@ public class ElectronicMembershipCardController {
                                         }
                                     }
                                 }
-                                integral =multiply.intValue();
+                                integral = multiply.intValue();
                                 logger.info("本次客户所得积分:" + integral);
                                 break;
                             }
-                        }else if (integralRuleDetail.getRuleType().equals("2")){    //按应收金额
+                        }else if (StringUtils.isNotBlank(integralRuleDetail.getGread()) && integralRuleDetail.getRuleType().equals("1")){  //按照实收金额
+                            if(calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 1 || calculateIntegral.getAmt().compareTo(integralRuleDetail.getRuleTerms()) == 0){
+                                BigDecimal divide = null;
+                                BigDecimal multiply = null;
+                                if(integralRuleDetail.getGread().equals("0")){      //等级为0时,表示所有人
+                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
+                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
+                                    if(integralActivity !=null && integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":   //  2.每月的多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    integral =multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
+                                }else if(integralRuleDetail.getGread().equals(calculateIntegral.getCustomerGrade())){       //如果等级相同
+                                    divide = calculateIntegral.getAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
+                                    multiply = divide.multiply(integralRuleDetail.getIntegral());
+                                    if(integralActivity !=null && integralActivity.equals("1") &&  datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":   //  2.每月的多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    integral =multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
+                                }
+                            }
+                        }else if(StringUtils.isNotBlank(integralRuleDetail.getGread()) && integralRuleDetail.getRuleType().equals("2")){    //按应收金额
                             if(calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                 BigDecimal divide = null;
                                 BigDecimal multiply = null;
-                                //判断油站配置的优惠类型
-                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
+                                if(integralRuleDetail.getGread().equals("0")){
                                     divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
                                     multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }else {
+                                    if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":   //  2.每月的 多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    integral = multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
+                                }else if(integralRuleDetail.getGread().equals(calculateIntegral.getCustomerGrade())){
                                     divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
                                     multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }
-                                if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
-                                    String datePicker = integralRuleList.get(0).getDatePicker();
-                                    switch (datePicker){
-                                        case "1":   //  1.按周来
-                                            int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-                                            day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-                                            currentTime = String.valueOf(day_Week);
-                                            break;
-                                        case "2":   //  2.每月的 多少号
-                                            int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-                                            day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-                                            currentTime = String.valueOf(day_month); //当前时间
-                                            break;
-                                        case "3":   //  3.固定日期
-                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-                                            break;
-                                    }
-                                    for (String s : datePickerTimeArray){
-                                        if(s.equals(currentTime)){
-                                            multiply = multiply.multiply(new BigDecimal(integralProportion));
-                                            break;
+                                    if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":   //  2.每月的 多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
                                         }
                                     }
+                                    integral = multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
                                 }
-                                integral = multiply.intValue();
-                                logger.info("本次客户所得积分:" + integral);
-                                break;
                             }
-                        }else if (integralRuleDetail.getRuleType().equals("3")){    //按照加油升数
+                        }else if(integralRuleDetail.getRuleType().equals("3")){    //按照加油升数
                             if(calculateIntegral.getOilLiters().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getOilLiters().compareTo(integralRuleDetail.getRuleTerms()) ==0){
                                 BigDecimal divide = null;
                                 BigDecimal multiply = null;
-                                //判断油站配置的优惠类型
-                                if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
+                                if(integralRuleDetail.getGread().equals("0")){
                                     divide = calculateIntegral.getOilLiters().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
                                     multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }else {
+                                    if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":  //  2.每月的 多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    integral =multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
+                                }else if(integralRuleDetail.getGread().equals(calculateIntegral.getCustomerGrade())){
                                     divide = calculateIntegral.getOilLiters().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
                                     multiply = divide.multiply(integralRuleDetail.getIntegral());
-                                }
-                                if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
-                                    String datePicker = integralRuleList.get(0).getDatePicker();
-                                    switch (datePicker){
-                                        case "1":   //  1.按周来
-                                            int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-                                            day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-                                            currentTime = String.valueOf(day_Week);
-                                            break;
-                                        case "2":  //  2.每月的 多少号
-                                            int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-                                            day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-                                            currentTime = String.valueOf(day_month); //当前时间
-                                            break;
-                                        case "3":   //  3.固定日期
-                                            currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-                                            break;
-                                    }
-                                    for (String s : datePickerTimeArray){
-                                        if(s.equals(currentTime)){
-                                            multiply = multiply.multiply(new BigDecimal(integralProportion));
-                                            break;
+                                    if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
+                                        String datePicker = integralRuleList.get(0).getDatePicker();
+                                        switch (datePicker){
+                                            case "1":   //  1.按周来
+                                                int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
+                                                day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_Week);
+                                                break;
+                                            case "2":  //  2.每月的 多少号
+                                                int day_month = calendar.get(Calendar.DAY_OF_MONTH);
+                                                day_month = day_month-1;        //减一原因:数据库存的下标从零开始
+                                                currentTime = String.valueOf(day_month); //当前时间
+                                                break;
+                                            case "3":   //  3.固定日期
+                                                currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
+                                                break;
+                                        }
+                                        for (String s : datePickerTimeArray){
+                                            if(s.equals(currentTime)){
+                                                multiply = multiply.multiply(new BigDecimal(integralProportion));
+                                                break;
+                                            }
                                         }
                                     }
-                                }
-                                integral =multiply.intValue();
-                                logger.info("本次客户所得积分:" + integral);
-                                break;
-                            }
-                        }
-                    }else if (integralRuleDetail.getOilType().equals("2")){     //非油品
-                        if (calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==1 || calculateIntegral.getReceivableAmt().compareTo(integralRuleDetail.getRuleTerms()) ==0){
-                            BigDecimal divide = null;
-                            BigDecimal multiply = null;
-                            //判断油站配置的优惠类型
-                            if(discountPlanType.equals("1") && integralRuleDetail.getGread() !=null && customerManage.getGrade().equals(integralRuleDetail.getGread())){   //等级直降
-                                divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-                                multiply = divide.multiply(integralRuleDetail.getIntegral());
-                            }else {
-                                divide = calculateIntegral.getReceivableAmt().divide(integralRuleDetail.getSaleAmt(), 0, BigDecimal.ROUND_HALF_DOWN);
-                                multiply = divide.multiply(integralRuleDetail.getIntegral());
-                            }
-                            if(integralActivity !=null && integralActivity.equals("1") && datePickerTimeArray !=null && integralProportion !=null){
-                                String datePicker = integralRuleList.get(0).getDatePicker();    //获取日期类型
-                                switch (datePicker){
-                                    case "1":   //  1.按周来
-                                        int day_Week = calendar.get(Calendar.DAY_OF_WEEK);
-                                        day_Week= day_Week-1;     //减一原因:数据库存的下标从零开始
-                                        currentTime = String.valueOf(day_Week);
-                                        break;
-                                    case "2":   //  2.每月的 多少号
-                                        int day_month = calendar.get(Calendar.DAY_OF_MONTH);
-                                        day_month = day_month-1;        //减一原因:数据库存的下标从零开始
-                                        currentTime = String.valueOf(day_month); //当前时间
-                                        break;
-                                    case "3":   //  3.固定日期
-                                        currentTime =new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //当前时间
-                                        break;
-                                }
-                                for (String s : datePickerTimeArray){
-                                    if(s.equals(currentTime)){
-                                        multiply = multiply.multiply(new BigDecimal(integralProportion));
-                                        break;
-                                    }
+                                    integral =multiply.intValue();
+                                    logger.info("本次客户所得积分:" + integral);
+                                    break;
                                 }
                             }
-                            integral = multiply.intValue();
-                            logger.info("本次客户所得积分:" + integral);
-                            break;
                         }
                     }
                 }
             }
-            CustomerCardSetting customerCardSetting = new CustomerCardSetting();
-            customerCardSetting.setStationId(calculateIntegral.getStationId());
-            //判断电子会员卡消费时是否享用基本倍数
-            List<CustomerCardSetting> cardRechargeSettingList = electronicMembershipCardService.getCardRechargeSettingList(customerCardSetting);
-            if(cardRechargeSettingList !=null && cardRechargeSettingList.size()==1){
-                String enjoyIntegralMultiple = cardRechargeSettingList.get(0).getEnjoyIntegralMultiple();
-                if(StringUtils.isNotBlank(enjoyIntegralMultiple)){
-                    BigDecimal integral_b = new BigDecimal(integral).multiply(new BigDecimal(enjoyIntegralMultiple));
-                    integral = integral_b.intValue();
-                }
-            }
             calculateIntegral.setIntegral(integral);
-            this.pushIntegral(calculateIntegral);
         }
-        return  integral;
+        return calculateIntegral;
     }
 
-    //更新积分并公众号推送积分
-    public void pushIntegral(CalculateIntegral calculateIntegral){
+    //插入用户积分信息或者更新用户积分信息
+    public CustomerPoints insertUserIntegral(CalculateIntegral calculateIntegral){
+        CustomerPoints customerPoints = new CustomerPoints();
+        customerPoints.setRecentlyPoints(calculateIntegral.getIntegral());  //用户当前所获得的积分
+        customerPoints.setStationId(calculateIntegral.getStationId());  //油站ID
+        customerPoints.setMinaOpenId(calculateIntegral.getOpenId());    //用户小程序ID
+        customerPoints.setUnionId(calculateIntegral.getUnionId());      //用户unionId
+        //获取客户积分信息
+        CustomerPoints customerPointsInfo = customerPointsService.getCustomerPointsInfoByUnionId(customerPoints);
+        if(customerPointsInfo !=null){
+            logger.info("当前存在客户:"+ customerPointsInfo.getMinaOpenId());
+            logger.info("当前客户原有剩余积分:"+ customerPointsInfo.getPoints().toString());
+            CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();
+            customerPointsRecord.setCreateTime(new Date());
+            customerPointsRecord.setCustomerName(customerPointsInfo.getCustomerName());
+            customerPointsRecord.setStationName(customerPointsInfo.getStationName());
+            customerPointsRecord.setStationId(customerPointsInfo.getStationId());
+            customerPointsRecord.setRecordType("+");
+            customerPointsRecord.setUnionId(customerPointsInfo.getUnionId());
+            customerPointsRecord.setIntegral(calculateIntegral.getIntegral());
+            //插入客户记录表
+            customerPointsRecordService.insertCustomerPointsRecordInfo(customerPointsRecord);
+
+            //如果已存在客户则 客户余额积分= 当前客户已有积分 + 本次所得积分
+            BigDecimal surplusIntegral =new BigDecimal(customerPointsInfo.getPoints()).add(new BigDecimal(calculateIntegral.getIntegral()));
+            customerPoints.setPoints(surplusIntegral.intValue());
+            logger.info("本次加油后客户应有总积分:"+ customerPoints.getPoints().toString());
+            //用户已累积积分
+            BigDecimal add = new BigDecimal(customerPointsInfo.getAccumulatePoints()).add(new BigDecimal(calculateIntegral.getIntegral()));
+            customerPoints.setAccumulatePoints(add.intValue());
+            customerPoints.setRecentConsumptionDate(new Date());
+            //更新客户积分
+            customerPointsService.updateCustomerPointsInfo(customerPoints);
+            logger.info("更新客户积分信息成功!");
+        }else {
+            logger.info("当前系统不存在该客户积分信息");
+            CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();
+            customerPointsRecord.setCreateTime(new Date());
+            customerPointsRecord.setCustomerName(calculateIntegral.getNickName());
+            customerPointsRecord.setStationName(calculateIntegral.getStationName());
+            customerPointsRecord.setStationId(calculateIntegral.getStationId());
+            customerPointsRecord.setRecordType("+");
+            customerPointsRecord.setUnionId(calculateIntegral.getUnionId());
+            customerPointsRecord.setIntegral(calculateIntegral.getIntegral());
+            customerPointsRecordService.insertCustomerPointsRecordInfo(customerPointsRecord);
+
+            customerPoints.setUnionId(calculateIntegral.getUnionId());
+            customerPoints.setPoints(calculateIntegral.getIntegral());
+            customerPoints.setConsumptionPoints(0);
+            customerPoints.setMobilePhone(calculateIntegral.getMobilePhone());
+            customerPoints.setCustomerName(calculateIntegral.getNickName());
+            customerPoints.setStationName(calculateIntegral.getStationName());
+            customerPoints.setAccumulatePoints(calculateIntegral.getIntegral());
+            customerPoints.setInvalidPoints(0);
+            customerPoints.setRecentConsumptionDate(new Date());
+            customerPoints.setCreateTime(new Date());
+            //新增客户积分
+            customerPointsService.insertCustomerPointsInfo(customerPoints);
+            logger.info("新增客户积分信息成功!");
+        }
+        return customerPoints;
+    }
+
+    //公众号推送积分
+    public void pushIntegral(CustomerPoints customerPoints){
         String gzhAppId ="";
         String gzhAppSecret ="";
         String stationName = "";        //油站名称
-        BigDecimal surplusIntegral=null;
-        String customerName =calculateIntegral.getNickName();       //客户昵称
-        String openId = calculateIntegral.getOpenId();      //客户小程序ID
-        Integer stationId = calculateIntegral.getStationId();   //油站ID
-        int integral = calculateIntegral.getIntegral();     //当前加油积分
-        String unionId = calculateIntegral.getUnionId();
-        String mobilePhone = calculateIntegral.getMobilePhone();
-        logger.info("客户小程序openId:" + openId);
-        if(StringUtils.isNotBlank(calculateIntegral.getOpenId())){
-            Map<String, String> m = stationService.getStationAppIdAndAppSecret(stationId);
+        logger.info("客户小程序openId:" + customerPoints.getMinaOpenId());
+        if(customerPoints.getStationId() !=null){
+            Map<String, String> m = stationService.getStationAppIdAndAppSecret(customerPoints.getStationId());
             if(m !=null && m.containsKey("stationName") && m.containsKey("gzhAppId") && m.containsKey("gzhAppSecret")){
                 stationName = m.get("stationName");
                 gzhAppId = m.get("gzhAppId");
                 gzhAppSecret = m.get("gzhAppSecret");
             }
-            CustomerPoints customerPoints = new CustomerPoints();
-            customerPoints.setStationId(calculateIntegral.getStationId());
-            customerPoints.setMinaOpenId(openId);
-            customerPoints.setUnionId(calculateIntegral.getUnionId());
-            CustomerPoints customerPointsInfo = customerPointsService.getCustomerPointsInfoByUnionId(customerPoints);
-            if(customerPointsInfo !=null){
-                logger.info("当前存在客户:"+ customerPointsInfo.getMinaOpenId());
-                logger.info("当前客户原有剩余积分:"+ customerPointsInfo.getPoints().toString());
-                customerName =customerPointsInfo.getCustomerName();
-                surplusIntegral =new BigDecimal(customerPointsInfo.getPoints()).add(new BigDecimal(integral));
-                CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();
-                customerPointsRecord.setCreateTime(new Date());
-                customerPointsRecord.setCustomerName(customerName);
-                customerPointsRecord.setStationName(stationName);
-                customerPointsRecord.setStationId(stationId);
-                customerPointsRecord.setRecordType("+");
-                customerPointsRecord.setUnionId(customerPointsInfo.getUnionId());
-                customerPointsRecord.setIntegral(integral);
-                customerPointsRecordService.insertCustomerPointsRecordInfo(customerPointsRecord);
-                //customerPoints.setUnionId(customerPointsInfo.getUnionId());
-                customerPoints.setPoints(surplusIntegral.intValue());
-                logger.info("本次加油后客户应有总积分:"+ customerPoints.getPoints().toString());
-                //用户已累积积分
-                BigDecimal add = new BigDecimal(customerPointsInfo.getAccumulatePoints()).add(new BigDecimal(integral));
-                customerPoints.setAccumulatePoints(add.intValue());
-                customerPoints.setRecentConsumptionDate(new Date());
-                //更新客户积分
-                customerPointsService.updateCustomerPointsInfo(customerPoints);
-                logger.info("更新客户积分信息成功!");
-                String blogOpenId = customerPointsInfo.getBlogOpenId();     //公众号openId
-                if(blogOpenId !=null){
-                    //推送模板
-                    List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
-                    wxMpTemplate.add(new WxMpTemplateData("first","尊敬的"+customerName+",您好:\n" + "您在"+stationName+"的积分最新交易信息如下"));
-                    wxMpTemplate.add(new WxMpTemplateData("time", new SimpleDateFormat("yyyy年MM月dd日HH时mm分").format(new Date())));
-                    wxMpTemplate.add(new WxMpTemplateData("type", "增加"));
-                    wxMpTemplate.add(new WxMpTemplateData("Point", String.valueOf(integral)));
-                    wxMpTemplate.add(new WxMpTemplateData("From", stationName));
-                    wxMpTemplate.add(new WxMpTemplateData("remark",
-                            "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的可用积分为 "+surplusIntegral.toString()+" 分"));
-                    GzhNewsTemplate gzhNewsTemplate = new GzhNewsTemplate();
-                    gzhNewsTemplate.setStationId(stationId);
-                    gzhNewsTemplate.setTemplateType("1");
-                    GzhNewsTemplate gzhNewsTemplateInfo = gzhNewsTemplateService.getGzhNewsTemplate(gzhNewsTemplate);
-                    if(gzhNewsTemplateInfo !=null && gzhNewsTemplateInfo.getTemplateId() !=null){
-                        wxPushUtil.push(gzhAppId, gzhAppSecret, gzhNewsTemplateInfo.getTemplateId(), blogOpenId, wxMpTemplate);
-                    }
+            String blogOpenId = customerPoints.getBlogOpenId();     //公众号openId
+            if(blogOpenId !=null){
+                //推送模板
+                List<WxMpTemplateData> wxMpTemplate = new ArrayList<>();
+                wxMpTemplate.add(new WxMpTemplateData("first","尊敬的"+customerPoints.getCustomerName()+",您好:\n" + "您在"+stationName+"的积分最新交易信息如下"));
+                wxMpTemplate.add(new WxMpTemplateData("time", new SimpleDateFormat("yyyy年MM月dd日HH时mm分").format(new Date())));
+                wxMpTemplate.add(new WxMpTemplateData("type", "增加"));
+                wxMpTemplate.add(new WxMpTemplateData("Point", String.valueOf(customerPoints.getRecentlyPoints())));
+                wxMpTemplate.add(new WxMpTemplateData("From", stationName));
+                wxMpTemplate.add(new WxMpTemplateData("remark",
+                        "截止至" + new SimpleDateFormat(" yyyy年MM月dd日HH时mm分").format(new Date())+",您在"+stationName+"的可用积分为 "+customerPoints.getPoints().toString()+" 分"));
+                GzhNewsTemplate gzhNewsTemplate = new GzhNewsTemplate();
+                gzhNewsTemplate.setStationId(customerPoints.getStationId());
+                gzhNewsTemplate.setTemplateType("1");
+                GzhNewsTemplate gzhNewsTemplateInfo = gzhNewsTemplateService.getGzhNewsTemplate(gzhNewsTemplate);
+                if(gzhNewsTemplateInfo !=null && gzhNewsTemplateInfo.getTemplateId() !=null){
+                    wxPushUtil.push(gzhAppId, gzhAppSecret, gzhNewsTemplateInfo.getTemplateId(), blogOpenId, wxMpTemplate);
                 }
-
-            }else {
-                logger.info("当前系统不存在该客户积分信息");
-                //customerName =userName;
-                surplusIntegral =new BigDecimal(integral);
-                CustomerPointsRecord customerPointsRecord = new CustomerPointsRecord();
-                customerPointsRecord.setCreateTime(new Date());
-                customerPointsRecord.setCustomerName(customerName);
-                customerPointsRecord.setStationName(stationName);
-                customerPointsRecord.setStationId(stationId);
-                customerPointsRecord.setRecordType("+");
-                customerPointsRecord.setUnionId(unionId);
-                customerPointsRecord.setIntegral(integral);
-                customerPointsRecordService.insertCustomerPointsRecordInfo(customerPointsRecord);
-
-                customerPoints.setUnionId(unionId);
-                customerPoints.setPoints(surplusIntegral.intValue());
-                customerPoints.setPoints(integral);
-                customerPoints.setConsumptionPoints(0);
-                customerPoints.setMobilePhone(mobilePhone);
-                customerPoints.setCustomerName(customerName);
-                customerPoints.setStationName(stationName);
-                customerPoints.setAccumulatePoints(integral);
-                customerPoints.setInvalidPoints(0);
-                customerPoints.setRecentConsumptionDate(new Date());
-                customerPoints.setCreateTime(new Date());
-                //新增客户积分
-                customerPointsService.insertCustomerPointsInfo(customerPoints);
-                logger.info("新增客户积分信息成功!");
             }
 
         }

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

@@ -585,7 +585,7 @@ public class PayController {
 
                             Map map = new HashMap();
                             map.put("stationId", infoMap.get("stationId").toString());
-                            map.put("oilGunNo", infoMap.get("oilGunNo").toString());
+                            map.put("oilGunNo", infoMap.get("oilGun").toString());
                             List<Map> listDevices = stationOilGunService.getPrinterSnByStationIdAndOilGunNoList(map);
                             if(listDevices !=null && listDevices.size() ==2){
                                 for(Map m : listDevices){