liu преди 1 година
родител
ревизия
a1cdf82131
променени са 24 файла, в които са добавени 642 реда и са изтрити 130 реда
  1. 5 0
      src/main/java/com/template/api/HouseLockControllerAPI.java
  2. 5 0
      src/main/java/com/template/api/HouseOrderAPI.java
  3. 3 3
      src/main/java/com/template/common/utils/MessageDecryptUtil.java
  4. 38 2
      src/main/java/com/template/controller/HouseLockController.java
  5. 20 7
      src/main/java/com/template/controller/HouseNumberStateController.java
  6. 272 75
      src/main/java/com/template/controller/HouseOrderController.java
  7. 44 2
      src/main/java/com/template/controller/PasswordIssController.java
  8. 18 0
      src/main/java/com/template/controller/ReportStatisticsParticularsVo.java
  9. 4 4
      src/main/java/com/template/controller/UnlockingAdminController.java
  10. 22 21
      src/main/java/com/template/controller/UnlockingCustomController.java
  11. 28 4
      src/main/java/com/template/controller/UnlockingEmployeeController.java
  12. 6 0
      src/main/java/com/template/mapper/HouseOrderMapper.java
  13. 16 0
      src/main/java/com/template/model/dto/AdministratorPasswordDto.java
  14. 9 10
      src/main/java/com/template/model/mqtt/PushCallback.java
  15. 3 0
      src/main/java/com/template/model/pojo/HouseOrder.java
  16. 21 0
      src/main/java/com/template/model/vo/HouseOrderElectricVo.java
  17. 31 0
      src/main/java/com/template/model/vo/HouseOrderWaterAndElectricVo.java
  18. 21 0
      src/main/java/com/template/model/vo/HouseOrderWaterVo.java
  19. 3 0
      src/main/java/com/template/model/vo/HouseStateVo.java
  20. 3 0
      src/main/java/com/template/model/vo/ReportStatisticsExportVo.java
  21. 6 0
      src/main/java/com/template/services/HouseOrderService.java
  22. 15 0
      src/main/java/com/template/services/impl/HouseOrderServziceImpl.java
  23. 3 1
      src/main/resources/mapper/template/HouseNumberMapper.xml
  24. 46 1
      src/main/resources/mapper/template/HouseOrderMapper.xml

+ 5 - 0
src/main/java/com/template/api/HouseLockControllerAPI.java

@@ -1,5 +1,6 @@
 package com.template.api;
 
+import com.template.model.dto.AdministratorPasswordDto;
 import com.template.model.dto.BingingDto;
 import com.template.model.dto.RemoteUnlocking;
 import com.template.model.result.CommonResult;
@@ -61,4 +62,8 @@ public interface HouseLockControllerAPI {
     @ApiOperation(value = "删除门锁", notes = "删除门锁", httpMethod = "GET")
     CommonResult deleteLock(@RequestParam String id,@RequestParam String luid);
 
+    @PostMapping("/saveAdministratorPassword")
+    @ApiOperation(value = "下发管理员密码", notes = "下发管理员密码", httpMethod = "POST")
+    CommonResult saveAdministratorPassword(@RequestBody AdministratorPasswordDto administratorPasswordDto);
+
 }

+ 5 - 0
src/main/java/com/template/api/HouseOrderAPI.java

@@ -148,5 +148,10 @@ public interface HouseOrderAPI {
     @ApiOperation(value = "免费订单数量", notes = "免费订单数量", httpMethod = "GET")
     CommonResult remainFree(@RequestParam String userId,@RequestParam String liveTime,@RequestParam String leaveTime);
 
+
+    @GetMapping("/reportStatisticsParticulars")
+    @ApiOperation(value = "统计报表详情", notes = "统计报表详情", httpMethod = "GET")
+    CommonResult reportStatisticsParticulars(@RequestParam Integer id);
+
 }
 

+ 3 - 3
src/main/java/com/template/common/utils/MessageDecryptUtil.java

@@ -15,7 +15,7 @@ public class MessageDecryptUtil {
 
     public static JSONObject decryptMessage(String message, String secret, String appId){
         PushMessage pushMessage = JSONObject.parseObject(message, PushMessage.class);
-        log.info("接收消息内容 : {}",JSONObject.toJSONString(pushMessage));
+//        log.info("接收消息内容 : {}",JSONObject.toJSONString(pushMessage));
 
         Map<String, Object> messageMap = new HashMap<>();
         messageMap.put("protocol",pushMessage.getProtocol());
@@ -38,12 +38,12 @@ public class MessageDecryptUtil {
             log.info("校验签名成功");
 
             String messageDate_str = AesUtils.decrypt(pushMessage.getData(),appId);
-            log.info("messageDate_str : {}" , messageDate_str);
+//            log.info("messageDate_str : {}" , messageDate_str);
 
 
 //            去掉头和尾的"和所有的\\和单个{多余的"和}多余的"
             messageDate_str = messageDate_str.replaceAll("\t","").substring(1, messageDate_str.length() - 1).replaceAll("\\\\","").replace("\"{","{").replace("}\"","}");
-            System.out.println("messageDate_str = " + messageDate_str);
+//            System.out.println("messageDate_str = " + messageDate_str);
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("protocol",pushMessage.getProtocol());
             jsonObject.put("pv",pushMessage.getPv());

+ 38 - 2
src/main/java/com/template/controller/HouseLockController.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.api.HouseLockControllerAPI;
 import com.template.common.utils.ExcelUtils;
+import com.template.common.utils.PasswordChecker;
+import com.template.model.dto.AdministratorPasswordDto;
 import com.template.model.dto.BingingDto;
 import com.template.model.dto.HouseLockListImportDto;
 import com.template.model.dto.RemoteUnlocking;
@@ -161,12 +163,11 @@ public class HouseLockController implements HouseLockControllerAPI {
             houseLock.setElectricQuantity(battery);
             houseLock.setNetworkState(state);
             houseLock.setEquipmentState(state);
-        }catch (Exception e){
+        } catch (Exception e) {
             return CommonResult.fail(e.getMessage());
         }
 
 
-
         houseLockService.updateById(houseLock);
 
         return CommonResult.ok(houseLock);
@@ -535,6 +536,41 @@ public class HouseLockController implements HouseLockControllerAPI {
         return CommonResult.ok();
     }
 
+    @Override
+    public CommonResult saveAdministratorPassword(AdministratorPasswordDto administratorPasswordDto) {
+
+        HouseLock houseLock = houseLockService.getById(administratorPasswordDto.getHouseLockId());
+        if (ObjectUtils.isEmpty(houseLock)) {
+            return CommonResult.fail("无该门锁");
+        }
+
+        String equipmentType = houseLock.getEquipmentType();
+        if (ObjectUtils.isEmpty(equipmentType)) {
+            return CommonResult.fail("未绑定门锁");
+        }
+//        监测密码是否符合要求
+        String passWord = administratorPasswordDto.getPassWord();
+        if (!PasswordChecker.isValidPassword(passWord)) {
+            return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
+        }
+        Integer houseNumberId = houseLock.getHouseNumberId();
+        UnlockingAdmin unlockingAdmin = null;
+        try {
+            unlockingAdmin = passwordIssController.administratorPassword(equipmentType, passWord,houseNumberId);
+            unlockingAdminService.save(unlockingAdmin);
+        } catch (Exception e) {
+            e.printStackTrace();
+//            删除锁
+            if (ObjectUtils.isNotEmpty(unlockingAdmin)) {
+                passwordIssController.deleteLockUser(unlockingAdmin.getLuid(), unlockingAdmin.getLockUserId());
+            }
+            return CommonResult.fail(e.getMessage());
+        }
+
+
+        return CommonResult.ok();
+    }
+
 
 }
 

+ 20 - 7
src/main/java/com/template/controller/HouseNumberStateController.java

@@ -2,6 +2,7 @@ package com.template.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -1126,13 +1127,25 @@ public class HouseNumberStateController implements HouseNumberStateAPI {
             return CommonResult.fail("该房间不存在");
         }
 
-//        LambdaQueryWrapper<HouseNumber> wrapperHn = new LambdaQueryWrapper<>();
-//        wrapperHn.eq(HouseNumber::getHouseId, houseNumber.getHouseId());
-////       房间必须是净房
-//        wrapperHn.eq(HouseNumber::getHouseStatus, 1);
-//
-//        List<HouseNumber> houseNumberList2 = houseNumberService.list(wrapperHn);
-        List<HouseNumberVo> houseNumberList = houseNumberService.roomChangePage(houseNumber.getHouseId());
+
+//        查找所有的上线的房型
+        LambdaQueryWrapper<House> wrapperH=new LambdaQueryWrapper<>();
+        wrapperH.eq(House::getIsAdded,1);
+        List<House> houses = houseService.list(wrapperH);
+
+        String houseId="";
+        for (int i = 0; i < houses.size(); i++) {
+            House house = houses.get(i);
+            String id=house.getId()+"";
+            if (i == 0) {
+                houseId = id;
+            } else {
+                houseId = houseId + "," + id;
+            }
+        }
+
+
+        List<HouseNumberVo> houseNumberList = houseNumberService.roomChangePage(houseId);
 
         String houseNumberIds = "";
         for (int i = 0; i < houseNumberList.size(); i++) {

+ 272 - 75
src/main/java/com/template/controller/HouseOrderController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import com.template.annotation.PassToken;
 import com.template.api.HouseOrderAPI;
 import com.template.common.utils.*;
@@ -35,6 +36,7 @@ import com.wechat.pay.java.service.payments.nativepay.NativePayService;
 import com.wechat.pay.java.service.refund.RefundService;
 import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest;
 import com.wechat.pay.java.service.refund.model.Refund;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.poi.ss.usermodel.Row;
@@ -359,7 +361,7 @@ public class HouseOrderController implements HouseOrderAPI {
 //        预定人电话号码
             houseOrder.setReservePhone(users.getPhone());
             log.info("预定人手机号码:" + users.getPhone());
-        }else {
+        } else {
             //        预定人姓名
             houseOrder.setReserveName(establishOrderDto.getReserveName());
             log.info("预定人姓名:" + establishOrderDto.getReserveName());
@@ -1169,7 +1171,6 @@ public class HouseOrderController implements HouseOrderAPI {
                 houseOrderBillService.save(houseOrderBill);
 
 
-
             }
             LambdaQueryWrapper<Unlocking> wrapperU = new LambdaQueryWrapper<>();
             wrapperU.eq(Unlocking::getOrderNumber, orderNumber)
@@ -1488,7 +1489,6 @@ public class HouseOrderController implements HouseOrderAPI {
         Users users = usersService.getById(liveUsersId);
 
 
-
         if (ObjectUtils.isNotEmpty(unlocking)) {
 
 //            判断是什么类型的开锁方式
@@ -1813,61 +1813,176 @@ public class HouseOrderController implements HouseOrderAPI {
         headerRow.createCell(9).setCellValue("订单状态");
         headerRow.createCell(10).setCellValue("创建时间");
 
+
+
         if (ObjectUtils.isNotEmpty(vos) && vos.size() > 0) {
-            for (int i = 0; i < vos.size(); i++) {
-                ReportStatisticsExportVo vo = vos.get(i);
-                Row dataRow1 = sheet.createRow(i + 1);
+            if ("5".equals(s)) {
+                headerRow.createCell(11).setCellValue("订单详情");
+                //水:2.1元/吨,电:0.62元/度
+                BigDecimal waterPrice = new BigDecimal(2.1);
+                BigDecimal electricPrice = new BigDecimal(0.62);
+
+                //        获取免费的额度
+                SubsidySetup subsidySetup = subsidySetupService.list(new LambdaQueryWrapper<>()).get(0);
+
+                BigDecimal water = subsidySetup.getFreeQuotaOfWater();
+                BigDecimal electric = subsidySetup.getFreeQuotaOfElectric();
 
-                dataRow1.createCell(0).setCellValue(i + 1);
-                dataRow1.createCell(1).setCellValue(vo.getOrderNumber());
-                dataRow1.createCell(2).setCellValue(vo.getLiveName());
+                for (int i = 0; i < vos.size(); i++) {
+                    ReportStatisticsExportVo vo = vos.get(i);
+                    Row dataRow1 = sheet.createRow(i + 1);
+
+                    dataRow1.createCell(0).setCellValue(i + 1);
+                    dataRow1.createCell(1).setCellValue(vo.getOrderNumber());
+                    dataRow1.createCell(2).setCellValue(vo.getLiveName());
 //                房型是房间名称加房间类型
-                String roomName = vo.getRoomName();
-                String roomType = vo.getRoomType();
-                String type = "";
-                if ("1".equals(roomType)) {
-                    type = "全";
-                } else {
-                    type = "钟";
-                }
-                dataRow1.createCell(3).setCellValue(vo.getOrgName());
-                dataRow1.createCell(4).setCellValue(vo.getCardNumber());
-                if (ObjectUtils.isEmpty(roomName)) {
-                    dataRow1.createCell(5).setCellValue(roomName);
-                } else {
-                    dataRow1.createCell(5).setCellValue(roomName + "(" + type + ")");
-                }
-                dataRow1.createCell(6).setCellValue(vo.getRoomNumber());
-                dataRow1.createCell(7).setCellValue(vo.getPayPrice().doubleValue());
-                dataRow1.createCell(8).setCellValue(vo.getPayTime());
+                    String roomName = vo.getRoomName();
+                    String roomType = vo.getRoomType();
+                    String type = "";
+                    if ("1".equals(roomType)) {
+                        type = "全";
+                    } else {
+                        type = "钟";
+                    }
+                    dataRow1.createCell(3).setCellValue(vo.getOrgName());
+                    dataRow1.createCell(4).setCellValue(vo.getCardNumber());
+                    if (ObjectUtils.isEmpty(roomName)) {
+                        dataRow1.createCell(5).setCellValue(roomName);
+                    } else {
+                        dataRow1.createCell(5).setCellValue(roomName + "(" + type + ")");
+                    }
+                    dataRow1.createCell(6).setCellValue(vo.getRoomNumber());
+                    dataRow1.createCell(7).setCellValue(vo.getPayPrice().doubleValue());
+                    dataRow1.createCell(8).setCellValue(vo.getPayTime());
 //                订单状态
-                String orderStatus = vo.getOrderStatus();
-                String orderName = "";
-                if ("1".equals(orderStatus)) {
-                    orderName = "待支付";
-                } else if ("2".equals(orderStatus)) {
-                    orderName = "已支付";
-                } else if ("3".equals(orderStatus)) {
-                    orderName = "待入住";
-                } else if ("4".equals(orderStatus)) {
-                    orderName = "已入住";
-                } else if ("5".equals(orderStatus)) {
-                    orderName = "待结账";
-                } else if ("6".equals(orderStatus)) {
-                    orderName = "退款中";
-                } else if ("7".equals(orderStatus)) {
-                    orderName = "已退款";
-                } else if ("8".equals(orderStatus)) {
-                    orderName = "已退房";
-                } else if ("9".equals(orderStatus)) {
-                    orderName = "已取消";
-                } else if ("10".equals(orderStatus)) {
-                    orderName = "已支付未入住";
+                    String orderStatus = vo.getOrderStatus();
+                    String orderName = "";
+                    if ("1".equals(orderStatus)) {
+                        orderName = "待支付";
+                    } else if ("2".equals(orderStatus)) {
+                        orderName = "已支付";
+                    } else if ("3".equals(orderStatus)) {
+                        orderName = "待入住";
+                    } else if ("4".equals(orderStatus)) {
+                        orderName = "已入住";
+                    } else if ("5".equals(orderStatus)) {
+                        orderName = "待结账";
+                    } else if ("6".equals(orderStatus)) {
+                        orderName = "退款中";
+                    } else if ("7".equals(orderStatus)) {
+                        orderName = "已退款";
+                    } else if ("8".equals(orderStatus)) {
+                        orderName = "已退房";
+                    } else if ("9".equals(orderStatus)) {
+                        orderName = "已取消";
+                    } else if ("10".equals(orderStatus)) {
+                        orderName = "已支付未入住";
+                    }
+
+                    dataRow1.createCell(9).setCellValue(orderName);
+                    dataRow1.createCell(10).setCellValue(vo.getCreateTime());
+//                    订单详情
+                    List<HouseOrderWaterAndElectricVo> houseOrderWaters=houseOrderService.getWaterAndElectric(vo.getHouseOrderSource());
+                    String details="";
+                    for (int i2 = 0; i2 < houseOrderWaters.size(); i++) {
+                        HouseOrderWaterAndElectricVo we = houseOrderWaters.get(i2);
+                        we.setFreeWater(water);
+                        we.setWaterPrice(waterPrice);
+//          计算总金额
+                        BigDecimal waterConsume = we.getWaterConsume();
+                        BigDecimal subtract=waterConsume.subtract(water);
+                        if (subtract.doubleValue()<0) {
+                            subtract=new BigDecimal(0);
+                        }
+                        BigDecimal waterTotalPrice=subtract.multiply(waterPrice);
+                        we.setWaterTotalPrice(waterTotalPrice);
+
+
+                        we.setFreeElectric(electric);
+                        we.setElectricPrice(electricPrice);
+//          计算总金额
+                        BigDecimal electricConsume = we.getElectricConsume();
+                        BigDecimal subtract2=electricConsume.subtract(electric);
+                        if (subtract2.doubleValue()<0) {
+                            subtract2=new BigDecimal(0);
+                        }
+                        BigDecimal electricTotalPrice=subtract2.multiply(electricPrice);
+                        we.setElectricTotalPrice(electricTotalPrice);
+
+                        if (i2==0) {
+                            details="订单号: "+we.getOrderNumber()+","+"入住时间: "+we.getLiveTime()+","+"离店时间: "+we.getLeaveTime()+","+"房号: "+we.getRoomNumber()
+                                    +","+"用水量/吨: "+we.getWaterConsume()+","+"水价/元: "+we.getWaterPrice()+","+"水费补助/吨: "+we.getFreeWater()
+                            +","+"产生水费/元: "+we.getWaterTotalPrice()+","+"用电量/度: "+we.getElectricConsume()+","+"电价/元: "+we.getElectricPrice()
+                            +","+"电费补助/度: "+we.getFreeElectric()+","+"产生的电费/元: "+we.getElectricTotalPrice();
+                        }else {
+                            details=details+"\n"
+                                    +"订单号: "+we.getOrderNumber()+","+"入住时间: "+we.getLiveTime()+","+"离店时间: "+we.getLeaveTime()+","+"房号: "+we.getRoomNumber()
+                                    +","+"用水量/吨: "+we.getWaterConsume()+","+"水价/元: "+we.getWaterPrice()+","+"水费补助/吨: "+we.getFreeWater()
+                                    +","+"产生水费/元: "+we.getWaterTotalPrice()+","+"用电量/度: "+we.getElectricConsume()+","+"电价/元: "+we.getElectricPrice()
+                                    +","+"电费补助/度: "+we.getFreeElectric()+","+"产生的电费/元: "+we.getElectricTotalPrice();
+                        }
+                    }
+
+                    dataRow1.createCell(11).setCellValue(details);
                 }
 
-                dataRow1.createCell(9).setCellValue(orderName);
-                dataRow1.createCell(10).setCellValue(vo.getCreateTime());
 
+            } else {
+                for (int i = 0; i < vos.size(); i++) {
+                    ReportStatisticsExportVo vo = vos.get(i);
+                    Row dataRow1 = sheet.createRow(i + 1);
+
+                    dataRow1.createCell(0).setCellValue(i + 1);
+                    dataRow1.createCell(1).setCellValue(vo.getOrderNumber());
+                    dataRow1.createCell(2).setCellValue(vo.getLiveName());
+//                房型是房间名称加房间类型
+                    String roomName = vo.getRoomName();
+                    String roomType = vo.getRoomType();
+                    String type = "";
+                    if ("1".equals(roomType)) {
+                        type = "全";
+                    } else {
+                        type = "钟";
+                    }
+                    dataRow1.createCell(3).setCellValue(vo.getOrgName());
+                    dataRow1.createCell(4).setCellValue(vo.getCardNumber());
+                    if (ObjectUtils.isEmpty(roomName)) {
+                        dataRow1.createCell(5).setCellValue(roomName);
+                    } else {
+                        dataRow1.createCell(5).setCellValue(roomName + "(" + type + ")");
+                    }
+                    dataRow1.createCell(6).setCellValue(vo.getRoomNumber());
+                    dataRow1.createCell(7).setCellValue(vo.getPayPrice().doubleValue());
+                    dataRow1.createCell(8).setCellValue(vo.getPayTime());
+//                订单状态
+                    String orderStatus = vo.getOrderStatus();
+                    String orderName = "";
+                    if ("1".equals(orderStatus)) {
+                        orderName = "待支付";
+                    } else if ("2".equals(orderStatus)) {
+                        orderName = "已支付";
+                    } else if ("3".equals(orderStatus)) {
+                        orderName = "待入住";
+                    } else if ("4".equals(orderStatus)) {
+                        orderName = "已入住";
+                    } else if ("5".equals(orderStatus)) {
+                        orderName = "待结账";
+                    } else if ("6".equals(orderStatus)) {
+                        orderName = "退款中";
+                    } else if ("7".equals(orderStatus)) {
+                        orderName = "已退款";
+                    } else if ("8".equals(orderStatus)) {
+                        orderName = "已退房";
+                    } else if ("9".equals(orderStatus)) {
+                        orderName = "已取消";
+                    } else if ("10".equals(orderStatus)) {
+                        orderName = "已支付未入住";
+                    }
+
+                    dataRow1.createCell(9).setCellValue(orderName);
+                    dataRow1.createCell(10).setCellValue(vo.getCreateTime());
+
+                }
             }
         }
 
@@ -1877,7 +1992,6 @@ public class HouseOrderController implements HouseOrderAPI {
 //        return CommonResult.ok();
     }
 
-
     @Override
     public CommonResult orderPage(String userId, int page, int size, String status) {
 
@@ -3612,6 +3726,62 @@ public class HouseOrderController implements HouseOrderAPI {
         return CommonResult.ok(vos);
     }
 
+    @Override
+    public CommonResult reportStatisticsParticulars(Integer id) {
+        HouseOrder houseOrder = houseOrderService.getById(id);
+        if (ObjectUtils.isEmpty(houseOrder)) {
+            return CommonResult.fail("不存在该订单");
+        }
+        String houseOrderSource = houseOrder.getHouseOrderSource();
+        List<HouseOrderWaterVo> houseOrderWaters=houseOrderService.getWater(houseOrderSource);
+        List<HouseOrderElectricVo> houseOrderElectrics=houseOrderService.getElectric(houseOrderSource);
+
+        //水:2.1元/吨,电:0.62元/度
+        BigDecimal waterPrice = new BigDecimal(2.1);
+        BigDecimal electricPrice = new BigDecimal(0.62);
+
+        //        获取免费的额度
+        SubsidySetup subsidySetup = subsidySetupService.list(new LambdaQueryWrapper<>()).get(0);
+
+        BigDecimal water = subsidySetup.getFreeQuotaOfWater();
+        BigDecimal electric = subsidySetup.getFreeQuotaOfElectric();
+
+        for (int i = 0; i < houseOrderWaters.size(); i++) {
+            HouseOrderWaterVo houseOrderWaterVo = houseOrderWaters.get(i);
+            houseOrderWaterVo.setFreeWater(water);
+            houseOrderWaterVo.setWaterPrice(waterPrice);
+//          计算总金额
+            BigDecimal waterConsume = houseOrderWaterVo.getWaterConsume();
+            BigDecimal subtract=waterConsume.subtract(water);
+            if (subtract.doubleValue()<0) {
+                subtract=new BigDecimal(0);
+            }
+            BigDecimal waterTotalPrice=subtract.multiply(waterPrice);
+            houseOrderWaterVo.setWaterTotalPrice(waterTotalPrice);
+        }
+
+        for (int i = 0; i < houseOrderElectrics.size(); i++) {
+            HouseOrderElectricVo houseOrderElectricVo = houseOrderElectrics.get(i);
+            houseOrderElectricVo.setFreeElectric(electric);
+            houseOrderElectricVo.setElectricPrice(electricPrice);
+//          计算总金额
+            BigDecimal electricConsume = houseOrderElectricVo.getElectricConsume();
+            BigDecimal subtract=electricConsume.subtract(electric);
+            if (subtract.doubleValue()<0) {
+                subtract=new BigDecimal(0);
+            }
+            BigDecimal electricTotalPrice=subtract.multiply(electricPrice);
+            houseOrderElectricVo.setElectricTotalPrice(electricTotalPrice);
+        }
+
+        ReportStatisticsParticularsVo vo = new ReportStatisticsParticularsVo();
+        vo.setHouseOrder(houseOrder);
+        vo.setWaterVos(houseOrderWaters);
+        vo.setElectricVos(houseOrderElectrics);
+
+        return CommonResult.ok(vo);
+    }
+
 
     public static void main(String[] args) throws Exception {
 //        获取签名
@@ -3627,10 +3797,11 @@ public class HouseOrderController implements HouseOrderAPI {
 //      使用商户私钥对待签名串进行SHA256 with RSA签名,并对签名结果进行Base64编码得到签名值
         Signature sign = Signature.getInstance("SHA256withRSA");
 //        sign.initSign(privateKey);
-        sign.update(qmc.getBytes());
+//        sign.update(qmc.getBytes());
         String signature = RSATest.sign("KReLfbAgGZKc3slfEW9Jnhn7RLKqyrGF", qmc);
         System.out.println("signature = " + signature);
-
+//        String a="第一个订单"+"\n"+"第二个订单";
+//        System.out.println(a);
 
     }
 
@@ -3752,7 +3923,7 @@ public class HouseOrderController implements HouseOrderAPI {
 
     }
 
-//    @Scheduled(cron = "0 0/1 * * * ?")
+    //    @Scheduled(cron = "0 0/1 * * * ?")
     public void pay() {
         //        计算上个免费的订单
         LocalDateTime end = LocalDateTime.now().withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
@@ -3814,8 +3985,8 @@ public class HouseOrderController implements HouseOrderAPI {
         BigDecimal waterPrice = new BigDecimal(2.1);
         BigDecimal electricPrice = new BigDecimal(0.62);
 
-        water = water.multiply(waterPrice);
-        electric = electric.multiply(electricPrice);
+//        water = water.multiply(waterPrice);
+//        electric = electric.multiply(electricPrice);
 
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
@@ -3844,34 +4015,57 @@ public class HouseOrderController implements HouseOrderAPI {
             BigDecimal electricTotal = new BigDecimal(0);
             BigDecimal electricCostTotal = new BigDecimal(0);
 
-            for (HouseOrder ownerClass : ownerClasses) {
+            String houseOrderSource = "";
+
+
+            for (int i = 0; i < ownerClasses.size(); i++) {
+                HouseOrder ownerClass = ownerClasses.get(i);
+                String id = ownerClass.getId()+"";
+                if (i==0) {
+                    houseOrderSource=id;
+                }else {
+                    houseOrderSource=houseOrderSource+","+id;
+                }
+
 //                金额
-                BigDecimal electricCost = ownerClass.getElectricCost();
-                electricCostTotal = electricCostTotal.add(electricCost);
+//                BigDecimal electricCost = ownerClass.getElectricCost();
+
 //                能耗
                 BigDecimal electricConsume = ownerClass.getElectricConsume();
-                electricTotal = electricTotal.add(electricConsume);
 
-                BigDecimal waterCost = ownerClass.getWaterCost();
-                waterCostTotal = waterCostTotal.add(waterCost);
+                if (electricConsume.subtract(electric).doubleValue() > 0) {
+//                    超出的能耗
+                    BigDecimal decimal = electricConsume.subtract(electric);
+//                    超出的总能耗
+                    electricTotal = electricTotal.add(decimal);
+
+//                    超出的金额
+                    BigDecimal multiply = decimal.multiply(electricPrice);
+//                    超出的总金额
+                    electricCostTotal = electricCostTotal.add(multiply);
+                }
+
 
+//                BigDecimal waterCost = ownerClass.getWaterCost();
                 BigDecimal waterConsume = ownerClass.getWaterConsume();
-                waterTotal = waterTotal.add(waterConsume);
+                if (waterConsume.subtract(water).doubleValue() > 0) {
+//                     超出的能耗
+                    BigDecimal decimal = waterConsume.subtract(water);
+//                     超出的总能耗
+                    waterTotal = waterTotal.add(decimal);
+
+//                    超出的金额
+                    BigDecimal multiply = decimal.multiply(waterPrice);
+//                    超出的总金额
+                    waterCostTotal = waterCostTotal.add(multiply);
+                }
 
             }
 
-//            需支付金额
-            BigDecimal payPrice = new BigDecimal(0);
-//            总额度大于免费额度
-            if (waterTotal.subtract(water).doubleValue() > 0) {
-                BigDecimal totalWaterPrice = waterCostTotal.subtract(water);
-                payPrice = payPrice.add(totalWaterPrice);
-            }
+//            需支付金额=电费+水费
+            BigDecimal payPrice = waterCostTotal.add(electricCostTotal);
+
 
-            if (electricTotal.subtract(electric).doubleValue() > 0) {
-                BigDecimal totalElectricPrice = electricCostTotal.subtract(electric);
-                payPrice = payPrice.add(totalElectricPrice);
-            }
             if (payPrice.doubleValue() > 0) {
                 HouseOrder houseOrder = new HouseOrder();
                 //        订单号
@@ -3893,6 +4087,8 @@ public class HouseOrderController implements HouseOrderAPI {
                 houseOrder.setReserveUserId(user);
 //                入住人id
                 houseOrder.setLiveUsersId(user);
+//              居住天数
+                houseOrder.setLiveDay(ownerClasses.size() + "");
 
 //                渠道
                 houseOrder.setOrderChannel("1");
@@ -3908,6 +4104,7 @@ public class HouseOrderController implements HouseOrderAPI {
                 houseOrder.setReserveLeaveTime(end.format(dateTimeFormatter1));
                 houseOrder.setLiveTime(Date.from(start.atZone(ZoneId.systemDefault()).toInstant()));
                 houseOrder.setLeaveTime(Date.from(end.atZone(ZoneId.systemDefault()).toInstant()));
+                houseOrder.setHouseOrderSource(houseOrderSource);
 
                 houseOrders.add(houseOrder);
             }

+ 44 - 2
src/main/java/com/template/controller/PasswordIssController.java

@@ -741,6 +741,7 @@ public class PasswordIssController {
 
     }
 
+    //批量修改用户时效
     public void updateLock(String lockUserId, String luid, String startTime, String endTime) {
         DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         long start = LocalDateTime.parse(startTime, dateTimeFormatter1).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
@@ -769,10 +770,51 @@ public class PasswordIssController {
 
     }
 
-    public void saveAdministrator(){
 
-    }
+    //添加管理员密码
+    public UnlockingAdmin administratorPassword(String luid, String passWord,Integer houseNumberId) {
+
+//    将密码加密
+
+        System.out.println("密码passWord = " + passWord);
+        System.out.println("设备luid = " + luid);
+        String encryptPassWord = AesUtils.encrypt(passWord, luid);
+
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("luid", luid);//"80A036AEA1D3");
+        map.put("categoryId", doorLockConfig.getCategoryId());//"d0c248256f8346d2a19afa296562b319");//设备分类ID 所有蓝牙wifi锁默认统一值
+        map.put("userName", "13097286670");// 用户名 也就是管理锁的账号
+        map.put("type", 1);
+        map.put("password", encryptPassWord);
+
+        String jsonContent = JSONObject.toJSONString(map);
 
+        try {
+            JSONObject jsonObject = queryData(jsonContent, PasswordUrlEnum.Password.getUrl());
+            String result = jsonObject.getString("result");
+            if (!"1".equals(result)) {
+                throw new RuntimeException(jsonObject.getString("message"));
+            }
+            JSONObject data = jsonObject.getJSONObject("data");
+            String temporaryPassword = data.getString("temporaryPassword");
+
+            UnlockingAdmin unlocking = new UnlockingAdmin();
+            unlocking.setPassWord(passWord);
+
+//            锁用户id
+            String id = data.getString("id");
+            unlocking.setLockUserId(id);
+            unlocking.setLockStatus("1");
+            unlocking.setLuid(luid);
+            unlocking.setHouseNumberId(houseNumberId+"");
+            unlocking.setType(1);
+
+            return unlocking;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
 
 
     //添加公寓

+ 18 - 0
src/main/java/com/template/controller/ReportStatisticsParticularsVo.java

@@ -0,0 +1,18 @@
+package com.template.controller;
+
+import com.template.model.pojo.HouseOrder;
+import com.template.model.vo.HouseOrderElectricVo;
+import com.template.model.vo.HouseOrderWaterVo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ReportStatisticsParticularsVo {
+    private HouseOrder houseOrder;
+
+    private List<HouseOrderWaterVo> waterVos;
+
+    private List<HouseOrderElectricVo> electricVos;
+
+}

+ 4 - 4
src/main/java/com/template/controller/UnlockingAdminController.java

@@ -298,10 +298,10 @@ public class UnlockingAdminController implements UnlockingAdminControllerAPI {
             return CommonResult.fail("不存在该记录");
         }
 
-        String lockStatus = byId.getLockStatus();
-        if (!"1".equals(lockStatus)) {
-            return CommonResult.fail("只有密码用户才能修改时效");
-        }
+//        String lockStatus = byId.getLockStatus();
+//        if (!"1".equals(lockStatus)) {
+//            return CommonResult.fail("只有密码用户才能修改时效");
+//        }
         String lockUserId = byId.getLockUserId();
         String luid = byId.getLuid();
         String startTime = updateLockDto.getStartTime();

+ 22 - 21
src/main/java/com/template/controller/UnlockingCustomController.java

@@ -262,10 +262,10 @@ public class UnlockingCustomController implements UnlockingCustomControllerAPI {
             return CommonResult.fail("不存在该记录");
         }
 
-        String lockStatus = byId.getLockStatus();
-        if (!"1".equals(lockStatus)) {
-            return CommonResult.fail("只有密码用户才能修改时效");
-        }
+//        String lockStatus = byId.getLockStatus();
+//        if (!"1".equals(lockStatus)) {
+//            return CommonResult.fail("只有密码用户才能修改时效");
+//        }
         String lockUserId = byId.getLockUserId();
         String luid = byId.getLuid();
         String startTime = updateLockDto.getStartTime();
@@ -283,38 +283,39 @@ public class UnlockingCustomController implements UnlockingCustomControllerAPI {
 
     //    定时删除过期用户
     @Scheduled(cron = "0 0 0/2 * * ? ")
-//    @Scheduled(cron = "0 0/1 * * * ?")
     public void deleteUnlocking() {
 //        先查询已过期的自定义的锁
         LambdaQueryWrapper<UnlockingCustom> wrapperUC = new LambdaQueryWrapper<>();
         wrapperUC.le(UnlockingCustom::getEndTime, new Date());
         List<UnlockingCustom> list = unlockingCustomService.list(wrapperUC);
         if (list.size() > 0) {
-            ArrayList<Integer> idUCs = new ArrayList<>();
+//            ArrayList<Integer> idUCs = new ArrayList<>();
             for (UnlockingCustom unlockingCustom : list) {
                 String luid = unlockingCustom.getLuid();
                 String lockUserId = unlockingCustom.getLockUserId();
                 passwordIssController.deleteLockUser(luid, lockUserId);
-                idUCs.add(unlockingCustom.getId());
+//                idUCs.add(unlockingCustom.getId());
+                unlockingCustomService.removeById(unlockingCustom.getId());
             }
-            unlockingCustomService.removeByIds(idUCs);
+//            unlockingCustomService.removeByIds(idUCs);
         }
 
 
 //        查询员工已过期的锁
-        LambdaQueryWrapper<UnlockingEmployee> wrapperUE = new LambdaQueryWrapper<>();
-        wrapperUE.le(UnlockingEmployee::getEndTime, new Date());
-        List<UnlockingEmployee> list2 = unlockingEmployeeService.list(wrapperUE);
-        if (list2.size() > 0) {
-            ArrayList<Integer> idUEs = new ArrayList<>();
-            for (UnlockingEmployee unlockingEmployee : list2) {
-                String luid = unlockingEmployee.getLuid();
-                String lockUserId = unlockingEmployee.getLockUserId();
-                passwordIssController.deleteLockUser(luid, lockUserId);
-                idUEs.add(unlockingEmployee.getId());
-            }
-            unlockingEmployeeService.removeByIds(idUEs);
-        }
+//        LambdaQueryWrapper<UnlockingEmployee> wrapperUE = new LambdaQueryWrapper<>();
+//        wrapperUE.le(UnlockingEmployee::getEndTime, new Date());
+//        List<UnlockingEmployee> list2 = unlockingEmployeeService.list(wrapperUE);
+//        if (list2.size() > 0) {
+////            ArrayList<Integer> idUEs = new ArrayList<>();
+//            for (UnlockingEmployee unlockingEmployee : list2) {
+//                String luid = unlockingEmployee.getLuid();
+//                String lockUserId = unlockingEmployee.getLockUserId();
+//                passwordIssController.deleteLockUser(luid, lockUserId);
+////                idUEs.add(unlockingEmployee.getId());
+//                unlockingEmployeeService.removeById(unlockingEmployee.getId());
+//            }
+////            unlockingEmployeeService.removeByIds(idUEs);
+//        }
 
     }
 

+ 28 - 4
src/main/java/com/template/controller/UnlockingEmployeeController.java

@@ -1,6 +1,7 @@
 package com.template.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.api.UnlockingEmployeeControllerAPI;
 import com.template.common.utils.PasswordChecker;
@@ -10,12 +11,15 @@ import com.template.model.result.CommonResult;
 import com.template.services.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
 
 /**
  * <p>
@@ -312,10 +316,10 @@ public class UnlockingEmployeeController implements UnlockingEmployeeControllerA
             return CommonResult.fail("不存在该记录");
         }
 
-        String lockStatus = byId.getLockStatus();
-        if (!"1".equals(lockStatus)) {
-            return CommonResult.fail("只有密码用户才能修改时效");
-        }
+//        String lockStatus = byId.getLockStatus();
+//        if (!"1".equals(lockStatus)) {
+//            return CommonResult.fail("只有密码用户才能修改时效");
+//        }
         String lockUserId = byId.getLockUserId();
         String luid = byId.getLuid();
         String startTime = updateLockDto.getStartTime();
@@ -331,5 +335,25 @@ public class UnlockingEmployeeController implements UnlockingEmployeeControllerA
         return CommonResult.ok();
     }
 
+
+    @Scheduled(cron = "0 0 0/2 * * ? ")
+    public void deleteUnlocking() {
+        //        查询员工已过期的锁
+        LambdaQueryWrapper<UnlockingEmployee> wrapperUE = new LambdaQueryWrapper<>();
+        wrapperUE.le(UnlockingEmployee::getEndTime, new Date());
+        List<UnlockingEmployee> list2 = unlockingEmployeeService.list(wrapperUE);
+        if (list2.size() > 0) {
+//            ArrayList<Integer> idUEs = new ArrayList<>();
+            for (UnlockingEmployee unlockingEmployee : list2) {
+                String luid = unlockingEmployee.getLuid();
+                String lockUserId = unlockingEmployee.getLockUserId();
+                passwordIssController.deleteLockUser(luid, lockUserId);
+//                idUEs.add(unlockingEmployee.getId());
+                unlockingEmployeeService.removeById(unlockingEmployee.getId());
+            }
+//            unlockingEmployeeService.removeByIds(idUEs);
+        }
+    }
+
 }
 

+ 6 - 0
src/main/java/com/template/mapper/HouseOrderMapper.java

@@ -43,4 +43,10 @@ public interface HouseOrderMapper extends BaseMapper<HouseOrder> {
     List<String> payHouseOrderUser(@Param("start") LocalDateTime start,@Param("end") LocalDateTime end);
 
     List<HouseOrder> getDate(@Param("dateTime") LocalDateTime dateTime, @Param("userId") String userId,@Param("source") Integer source);
+
+    List<HouseOrderWaterVo> getWater(@Param("houseOrderSource") String houseOrderSource);
+
+    List<HouseOrderElectricVo> getElectric(@Param("houseOrderSource") String houseOrderSource);
+
+    List<HouseOrderWaterAndElectricVo> getWaterAndElectric(@Param("houseOrderSource") String houseOrderSource);
 }

+ 16 - 0
src/main/java/com/template/model/dto/AdministratorPasswordDto.java

@@ -0,0 +1,16 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+public class AdministratorPasswordDto {
+    @NotNull(message = "id不能为空")
+    private Integer houseLockId;
+
+    //    设置的密码
+    @NotNull(message = "密码不能为空")
+    private String passWord;
+}
+

+ 9 - 10
src/main/java/com/template/model/mqtt/PushCallback.java

@@ -70,7 +70,6 @@ public class PushCallback implements MqttCallback {
 //        System.out.println("cause = " + cause);
     }
     @Override
-
     public void deliveryComplete(IMqttDeliveryToken token) {
         //publish后会执行到这里
         log.info("publish后会执行到这里");
@@ -89,10 +88,10 @@ public class PushCallback implements MqttCallback {
         // subscribe后得到的消息会执行到这里面
         String Payload = new String(message.getPayload());
  
-        log.info("============》》接收消息主题 : " + topic);
-        log.info("============》》接收消息Qos : " + message.getQos());
-        log.info("============》》接收消息内容 : " + Payload);
-        log.info("============》》接收ID : " + message.getId());
+//        log.info("============》》接收消息主题 : " + topic);
+//        log.info("============》》接收消息Qos : " + message.getQos());
+//        log.info("============》》接收消息内容 : " + Payload);
+//        log.info("============》》接收ID : " + message.getId());
         log.info("接收数据结束 下面可以执行数据处理操作");
 
         try {
@@ -103,9 +102,9 @@ public class PushCallback implements MqttCallback {
             UnlockingRecordServiceImpl unlockingRecordService = SpringUtil.getBean(UnlockingRecordServiceImpl.class);
             AlarmMessageServiceImpl alarmMessageService = SpringUtil.getBean(AlarmMessageServiceImpl.class);
 
-            System.out.println("topic:" + topic);
-            System.out.println("Qos:" + message.getQos());
-            System.out.println("message content:" + new String(message.getPayload()));
+//            System.out.println("topic:" + topic);
+//            System.out.println("Qos:" + message.getQos());
+//            System.out.println("message content:" + new String(message.getPayload()));
             JSONObject s = MessageDecryptUtil.decryptMessage(message.toString(), "6edfcc178c0f415d8e6628238761976f", "2d00b258183146c0a2b19f55250c4596");
             String protocol = s.getString("protocol");
 
@@ -114,9 +113,9 @@ public class PushCallback implements MqttCallback {
                 UnlockingRecord unlockingRecord = new UnlockingRecord();
                 unlockingRecord.setType("消息类型");
                 String data = s.getString("data");
-                System.out.println("data = " + data);
+//                System.out.println("data = " + data);
                 JSONObject jsonObject = JSONObject.parseObject(data);
-                System.out.println("jsonObject = " + jsonObject);
+//                System.out.println("jsonObject = " + jsonObject);
 //						结果
                 String result = jsonObject.getString("result");
 //						时间

+ 3 - 0
src/main/java/com/template/model/pojo/HouseOrder.java

@@ -133,6 +133,9 @@ public class HouseOrder implements Serializable {
     @ApiModelProperty(value = "免费订单来源,1.课表,2.流程管理")
     private Integer source;
 
+    @ApiModelProperty(value = "订单来源:多个用,隔开")
+    private String houseOrderSource;
+
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     private String createTime;

+ 21 - 0
src/main/java/com/template/model/vo/HouseOrderElectricVo.java

@@ -0,0 +1,21 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class HouseOrderElectricVo {
+    private String orderNumber;
+    private String liveTime;
+    private String leaveTime;
+    private String roomNumber;
+//    用电量
+    private BigDecimal electricConsume;
+    //    电费单价
+    private BigDecimal electricPrice;
+//    补助电量
+    private BigDecimal freeElectric;
+//    电费金额
+    private BigDecimal electricTotalPrice;
+}

+ 31 - 0
src/main/java/com/template/model/vo/HouseOrderWaterAndElectricVo.java

@@ -0,0 +1,31 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class HouseOrderWaterAndElectricVo {
+    private String orderNumber;
+    private String liveTime;
+    private String leaveTime;
+    private String roomNumber;
+
+    //    用水量
+    private BigDecimal waterConsume;
+    //    水费单价
+    private BigDecimal waterPrice;
+    //    补助水量
+    private BigDecimal freeWater;
+    //    水费金额
+    private BigDecimal waterTotalPrice;
+
+    //    用电量
+    private BigDecimal electricConsume;
+    //    电费单价
+    private BigDecimal electricPrice;
+    //    补助电量
+    private BigDecimal freeElectric;
+    //    电费金额
+    private BigDecimal electricTotalPrice;
+}

+ 21 - 0
src/main/java/com/template/model/vo/HouseOrderWaterVo.java

@@ -0,0 +1,21 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class HouseOrderWaterVo {
+   private String orderNumber;
+   private String liveTime;
+   private String leaveTime;
+   private String roomNumber;
+   //    用水量
+   private BigDecimal waterConsume;
+   //    水费单价
+   private BigDecimal waterPrice;
+   //    补助水量
+   private BigDecimal freeWater;
+   //    水费金额
+   private BigDecimal waterTotalPrice;
+}

+ 3 - 0
src/main/java/com/template/model/vo/HouseStateVo.java

@@ -1,5 +1,6 @@
 package com.template.model.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
@@ -14,6 +15,8 @@ public class HouseStateVo {
 //   1.净房 2.脏房
     private Integer houseStatus;
 
+    private String electricType;
+
 //  房间状态 (无订单时的)  1.空闲 2.正在使用
 //    private String houseType;
 //  房态状态(有订单时使用) 状态 1空闲、2预定、3入住、4脏房、5锁定

+ 3 - 0
src/main/java/com/template/model/vo/ReportStatisticsExportVo.java

@@ -39,4 +39,7 @@ public class ReportStatisticsExportVo {
 
     @ApiModelProperty(value = "创建时间")
     private String createTime;
+
+    @ApiModelProperty(value = "订单来源:多个用,隔开")
+    private String houseOrderSource;
 }

+ 6 - 0
src/main/java/com/template/services/HouseOrderService.java

@@ -53,4 +53,10 @@ public interface HouseOrderService extends IService<HouseOrder> {
     List<String> payHouseOrderUser(LocalDateTime start, LocalDateTime end);
 
     List<HouseOrder> getDate(LocalDateTime dateTime1, String userId,Integer source);
+
+    List<HouseOrderWaterVo> getWater(String houseOrderSource);
+
+    List<HouseOrderElectricVo> getElectric(String houseOrderSource);
+
+    List<HouseOrderWaterAndElectricVo> getWaterAndElectric(String houseOrderSource);
 }

+ 15 - 0
src/main/java/com/template/services/impl/HouseOrderServziceImpl.java

@@ -502,4 +502,19 @@ public class HouseOrderServziceImpl extends ServiceImpl<HouseOrderMapper, HouseO
     public List<HouseOrder> getDate(LocalDateTime dateTime1, String userId,Integer source) {
         return houseOrderMapper.getDate(dateTime1, userId,source);
     }
+
+    @Override
+    public List<HouseOrderWaterVo> getWater(String houseOrderSource) {
+        return houseOrderMapper.getWater(houseOrderSource);
+    }
+
+    @Override
+    public List<HouseOrderElectricVo> getElectric(String houseOrderSource) {
+        return houseOrderMapper.getElectric(houseOrderSource);
+    }
+
+    @Override
+    public List<HouseOrderWaterAndElectricVo> getWaterAndElectric(String houseOrderSource) {
+        return houseOrderMapper.getWaterAndElectric(houseOrderSource);
+    }
 }

+ 3 - 1
src/main/resources/mapper/template/HouseNumberMapper.xml

@@ -8,6 +8,7 @@
         hn.house_id as houseId,
         hn.room_number as houseNumber,
         hn.house_status as houseStatus,
+        hn.electric_type as electricType,
         h.room_name as houseName,
         hns.`status` AS status,
         ho.reserve_name as reserveName,
@@ -252,7 +253,7 @@
                h.room_price                     as roomPrice
         FROM `house_number` hn
                  LEFT JOIN house h on h.id = hn.house_id and hn.deleted = 0
-        WHERE hn.house_id = #{houseId}
+        WHERE  FIND_IN_SET(hn.house_id, #{houseId})
           AND hn.deleted = 0
           and hn.house_status = 1
     </select>
@@ -414,6 +415,7 @@
         hn.house_id as houseId,
         hn.room_number as houseNumber,
         hn.house_status as houseStatus,
+        hn.electric_type as electricType,
         h.room_name as houseName,
         hns.`status` AS status,
         ho.reserve_name as reserveName,

+ 46 - 1
src/main/resources/mapper/template/HouseOrderMapper.xml

@@ -301,7 +301,8 @@
         ho.pay_price as payPrice,
         ho.pay_time as payTime,
         ho.order_status as orderStatus,
-        ho.create_time as createTime
+        ho.create_time as createTime,
+        ho.house_order_source as houseOrderSource
         FROM
         `house_order` ho
         LEFT JOIN house_number hn on ho.house_number_id=hn.id
@@ -349,5 +350,49 @@
           AND source=#{source}
           AND pay_price=0
     </select>
+    <select id="getWater" resultType="com.template.model.vo.HouseOrderWaterVo">
+        SELECT
+            ho.order_number as orderNumber,
+            ho.live_time as liveTime,
+            ho.leave_time as leaveTime,
+            hn.room_number as roomNumber,
+            ho.water_consume as waterConsume
+        FROM
+            `house_order` ho
+            LEFT JOIN house_number hn on ho.house_number_id=hn.id
+        WHERE
+            deleted=0
+          AND FIND_IN_SET(ho.id,#{houseOrderSource})
+    </select>
+    <select id="getElectric" resultType="com.template.model.vo.HouseOrderElectricVo">
+        SELECT
+            ho.order_number as orderNumber,
+            ho.live_time as liveTime,
+            ho.leave_time as leaveTime,
+            hn.room_number as roomNumber,
+            ho.electric_consume as electricConsume
+        FROM
+            `house_order` ho
+                LEFT JOIN house_number hn on ho.house_number_id=hn.id
+        WHERE
+            deleted=0
+          AND FIND_IN_SET(ho.id,#{houseOrderSource})
+    </select>
+
+    <select id="getWaterAndElectric" resultType="com.template.model.vo.HouseOrderWaterAndElectricVo">
+        SELECT
+            ho.order_number as orderNumber,
+            ho.live_time as liveTime,
+            ho.leave_time as leaveTime,
+            hn.room_number as roomNumber,
+            ho.water_consume as waterConsume,
+            ho.electric_consume as electricConsume
+        FROM
+            `house_order` ho
+                LEFT JOIN house_number hn on ho.house_number_id=hn.id
+        WHERE
+            deleted=0
+          AND FIND_IN_SET(ho.id,#{houseOrderSource})
+    </select>
 
 </mapper>