Kaynağa Gözat

修改定时没有点退房的订单并自动退房接口,修改管理端房态退房,订单退房,小程序退房接口

liu 1 yıl önce
ebeveyn
işleme
d99299c313

+ 45 - 0
src/main/java/com/template/controller/HouseNumberStateController.java

@@ -1325,6 +1325,51 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
             HouseNumberState houseNumberStateData = houseNumberStateService.getData(new Date(), houseNumberId);
             if (ObjectUtils.isEmpty(houseNumberStateData)) {
                 houseOrder.setLeaveTime(Date.from(LocalDateTime.parse(reserveLeaveTime, dateTimeFormatter).atZone(ZoneId.systemDefault()).toInstant()));
+                //      获取水电消费金额和额度
+                HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
+                String electricEquipmentId = houseNumber.getElectricEquipmentId();
+                String waterEquipmentId = houseNumber.getWaterEquipmentId();
+                ElectricEquipment electricEquipment = electricEquipmentService.getById(electricEquipmentId);
+                WaterEquipment waterEquipment = waterEquipmentService.getById(waterEquipmentId);
+                if (ObjectUtils.isNotEmpty(electricEquipment) && ObjectUtils.isNotEmpty(waterEquipment)) {
+                    String electricEquipmentRoomId = electricEquipment.getRoomId();
+                    String waterEquipmentRoomId = waterEquipment.getRoomId();
+
+                    Date liveTime = houseOrder.getLiveTime();
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String live = sdf.format(liveTime);
+                    String leave = sdf.format(new Date());
+//                获取电的消费金额和额度
+                    JSONObject jsonObjectElectric = electricEquipmentService.roomCostRecord(electricEquipmentRoomId, live, leave);
+                    BigDecimal costElectric = jsonObjectElectric.getBigDecimal("cost");
+                    BigDecimal consumeElectric = jsonObjectElectric.getBigDecimal("consume");
+                    BigDecimal electricCost = houseOrder.getElectricCost();
+                    if (ObjectUtils.isNotEmpty(electricCost)) {
+                        costElectric = costElectric.add(electricCost);
+                    }
+                    BigDecimal electricConsume = houseOrder.getElectricConsume();
+                    if (ObjectUtils.isNotEmpty(electricConsume)) {
+                        consumeElectric = consumeElectric.add(electricConsume);
+                    }
+                    houseOrder.setElectricCost(costElectric);
+                    houseOrder.setElectricConsume(consumeElectric);
+//                获取水的消费金额和额度
+                    JSONObject jsonObjectWater = waterEquipmentService.roomCostRecord(waterEquipmentRoomId, live, leave);
+                    BigDecimal costWater = jsonObjectWater.getBigDecimal("cost");
+                    BigDecimal consumeWater = jsonObjectWater.getBigDecimal("consume");
+                    BigDecimal waterCost = houseOrder.getWaterCost();
+                    if (ObjectUtils.isNotEmpty(waterCost)) {
+                        costWater = costWater.add(waterCost);
+                    }
+                    BigDecimal waterConsume = houseOrder.getWaterConsume();
+                    if (ObjectUtils.isNotEmpty(waterConsume)) {
+                        consumeWater = consumeWater.add(waterConsume);
+                    }
+
+                    houseOrder.setWaterCost(costWater);
+                    houseOrder.setWaterConsume(consumeWater);
+
+                }
                 houseOrderService.updateById(houseOrder);
                 return CommonResult.ok("该时间段已超过退房时间,已修改其订单状态");
             }

+ 135 - 2
src/main/java/com/template/controller/HouseOrderController.java

@@ -969,6 +969,52 @@ public class HouseOrderController implements HouseOrderAPI {
             HouseNumberState houseNumberStateData = houseNumberStateService.getData(new Date(), houseNumberId);
             if (ObjectUtils.isNotEmpty(houseNumberStateData)) {
                 houseOrder.setLeaveTime(Date.from(LocalDateTime.parse(reserveLeaveTime, dateTimeFormatter).atZone(ZoneId.systemDefault()).toInstant()));
+                //      获取水电消费金额和额度
+                HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
+                String electricEquipmentId = houseNumber.getElectricEquipmentId();
+                String waterEquipmentId = houseNumber.getWaterEquipmentId();
+                ElectricEquipment electricEquipment = electricEquipmentService.getById(electricEquipmentId);
+                WaterEquipment waterEquipment = waterEquipmentService.getById(waterEquipmentId);
+                if (ObjectUtils.isNotEmpty(electricEquipment) && ObjectUtils.isNotEmpty(waterEquipment)) {
+                    String electricEquipmentRoomId = electricEquipment.getRoomId();
+                    String waterEquipmentRoomId = waterEquipment.getRoomId();
+
+                    Date liveTime = houseOrder.getLiveTime();
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String live = sdf.format(liveTime);
+                    String leave = sdf.format(new Date());
+//                获取电的消费金额和额度
+                    JSONObject jsonObjectElectric = electricEquipmentService.roomCostRecord(electricEquipmentRoomId, live, leave);
+                    BigDecimal costElectric = jsonObjectElectric.getBigDecimal("cost");
+                    BigDecimal consumeElectric = jsonObjectElectric.getBigDecimal("consume");
+                    BigDecimal electricCost = houseOrder.getElectricCost();
+                    if (ObjectUtils.isNotEmpty(electricCost)) {
+                        costElectric = costElectric.add(electricCost);
+                    }
+                    BigDecimal electricConsume = houseOrder.getElectricConsume();
+                    if (ObjectUtils.isNotEmpty(electricConsume)) {
+                        consumeElectric = consumeElectric.add(electricConsume);
+                    }
+                    houseOrder.setElectricCost(costElectric);
+                    houseOrder.setElectricConsume(consumeElectric);
+//                获取水的消费金额和额度
+                    JSONObject jsonObjectWater = waterEquipmentService.roomCostRecord(waterEquipmentRoomId, live, leave);
+                    BigDecimal costWater = jsonObjectWater.getBigDecimal("cost");
+                    BigDecimal consumeWater = jsonObjectWater.getBigDecimal("consume");
+                    BigDecimal waterCost = houseOrder.getWaterCost();
+                    if (ObjectUtils.isNotEmpty(waterCost)) {
+                        costWater = costWater.add(waterCost);
+                    }
+                    BigDecimal waterConsume = houseOrder.getWaterConsume();
+                    if (ObjectUtils.isNotEmpty(waterConsume)) {
+                        consumeWater = consumeWater.add(waterConsume);
+                    }
+
+                    houseOrder.setWaterCost(costWater);
+                    houseOrder.setWaterConsume(consumeWater);
+
+                }
+
                 houseOrderService.updateById(houseOrder);
                 return CommonResult.ok("该时间段已超过退房时间,已修改其订单状态");
             }
@@ -2215,6 +2261,50 @@ public class HouseOrderController implements HouseOrderAPI {
             HouseNumberState houseNumberStateData = houseNumberStateService.getData(new Date(), houseNumberId);
             if (ObjectUtils.isEmpty(houseNumberStateData)) {
                 houseOrder.setLeaveTime(Date.from(LocalDateTime.parse(reserveLeaveTime, dateTimeFormatter).atZone(ZoneId.systemDefault()).toInstant()));
+                //      获取水电消费金额和额度
+                HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
+                String electricEquipmentId = houseNumber.getElectricEquipmentId();
+                String waterEquipmentId = houseNumber.getWaterEquipmentId();
+                ElectricEquipment electricEquipment = electricEquipmentService.getById(electricEquipmentId);
+                WaterEquipment waterEquipment = waterEquipmentService.getById(waterEquipmentId);
+                if (ObjectUtils.isNotEmpty(electricEquipment) && ObjectUtils.isNotEmpty(waterEquipment)) {
+                    String electricEquipmentRoomId = electricEquipment.getRoomId();
+                    String waterEquipmentRoomId = waterEquipment.getRoomId();
+
+                    Date liveTime = houseOrder.getLiveTime();
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String live = sdf.format(liveTime);
+                    String leave = sdf.format(new Date());
+//                获取电的消费金额和额度
+                    JSONObject jsonObjectElectric = electricEquipmentService.roomCostRecord(electricEquipmentRoomId, live, leave);
+                    BigDecimal costElectric = jsonObjectElectric.getBigDecimal("cost");
+                    BigDecimal consumeElectric = jsonObjectElectric.getBigDecimal("consume");
+                    BigDecimal electricCost = houseOrder.getElectricCost();
+                    if (ObjectUtils.isNotEmpty(electricCost)) {
+                        costElectric = costElectric.add(electricCost);
+                    }
+                    BigDecimal electricConsume = houseOrder.getElectricConsume();
+                    if (ObjectUtils.isNotEmpty(electricConsume)) {
+                        consumeElectric = consumeElectric.add(electricConsume);
+                    }
+                    houseOrder.setElectricCost(costElectric);
+                    houseOrder.setElectricConsume(consumeElectric);
+//                获取水的消费金额和额度
+                    JSONObject jsonObjectWater = waterEquipmentService.roomCostRecord(waterEquipmentRoomId, live, leave);
+                    BigDecimal costWater = jsonObjectWater.getBigDecimal("cost");
+                    BigDecimal consumeWater = jsonObjectWater.getBigDecimal("consume");
+                    BigDecimal waterCost = houseOrder.getWaterCost();
+                    if (ObjectUtils.isNotEmpty(waterCost)) {
+                        costWater = costWater.add(waterCost);
+                    }
+                    BigDecimal waterConsume = houseOrder.getWaterConsume();
+                    if (ObjectUtils.isNotEmpty(waterConsume)) {
+                        consumeWater = consumeWater.add(waterConsume);
+                    }
+
+                    houseOrder.setWaterCost(costWater);
+                    houseOrder.setWaterConsume(consumeWater);
+                }
                 houseOrderService.updateById(houseOrder);
                 return CommonResult.ok("该时间段已超过退房时间,已修改其订单状态");
             }
@@ -2973,10 +3063,52 @@ public class HouseOrderController implements HouseOrderAPI {
                     houseOrder.setOrderStatus("8");
                     houseOrder.setLeaveTime(new Date());
                     String houseNumberId = houseOrder.getHouseNumberId();
-//            todo 获取水电止码
+                    HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
+//             获取水电能耗
+                    //      获取水电消费金额和额度
+                    String electricEquipmentId = houseNumber.getElectricEquipmentId();
+                    String waterEquipmentId = houseNumber.getWaterEquipmentId();
+                    ElectricEquipment electricEquipment = electricEquipmentService.getById(electricEquipmentId);
+                    WaterEquipment waterEquipment = waterEquipmentService.getById(waterEquipmentId);
+                    if (ObjectUtils.isNotEmpty(electricEquipment) && ObjectUtils.isNotEmpty(waterEquipment)) {
+                        String electricEquipmentRoomId = electricEquipment.getRoomId();
+                        String waterEquipmentRoomId = waterEquipment.getRoomId();
+
+                        Date liveTime = houseOrder.getLiveTime();
+                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                        String live = sdf.format(liveTime);
+                        String leave = sdf.format(new Date());
+//                获取电的消费金额和额度
+                        JSONObject jsonObjectElectric = electricEquipmentService.roomCostRecord(electricEquipmentRoomId, live, leave);
+                        BigDecimal costElectric = jsonObjectElectric.getBigDecimal("cost");
+                        BigDecimal consumeElectric = jsonObjectElectric.getBigDecimal("consume");
+                        BigDecimal electricCost = houseOrder.getElectricCost();
+                        if (ObjectUtils.isNotEmpty(electricCost)) {
+                            costElectric = costElectric.add(electricCost);
+                        }
+                        BigDecimal electricConsume = houseOrder.getElectricConsume();
+                        if (ObjectUtils.isNotEmpty(electricConsume)) {
+                            consumeElectric = consumeElectric.add(electricConsume);
+                        }
+                        houseOrder.setElectricCost(costElectric);
+                        houseOrder.setElectricConsume(consumeElectric);
+//                获取水的消费金额和额度
+                        JSONObject jsonObjectWater = waterEquipmentService.roomCostRecord(waterEquipmentRoomId, live, leave);
+                        BigDecimal costWater = jsonObjectWater.getBigDecimal("cost");
+                        BigDecimal consumeWater = jsonObjectWater.getBigDecimal("consume");
+                        BigDecimal waterCost = houseOrder.getWaterCost();
+                        if (ObjectUtils.isNotEmpty(waterCost)) {
+                            costWater = costWater.add(waterCost);
+                        }
+                        BigDecimal waterConsume = houseOrder.getWaterConsume();
+                        if (ObjectUtils.isNotEmpty(waterConsume)) {
+                            consumeWater = consumeWater.add(waterConsume);
+                        }
 
+                        houseOrder.setWaterCost(costWater);
+                        houseOrder.setWaterConsume(consumeWater);
+                    }
 
-                    HouseNumber houseNumber = houseNumberService.getById(houseNumberId);
 //          将房间设置成脏房
                     houseNumber.setHouseStatus(2);
 
@@ -2996,6 +3128,7 @@ public class HouseOrderController implements HouseOrderAPI {
 
 
     //    计算一个月内每个人的免费入住所消费的水电
+    @Scheduled(cron = "0 0 1 1 * ? ")
     public void payHouseOrder() {
 //        获取免费的额度
         SubsidySetup subsidySetup = subsidySetupService.list(new LambdaQueryWrapper<>()).get(0);