HotelOrderBillServiceImpl.java 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.chuanghai.ihotel.service.impl;
  2. import com.chuanghai.ihotel.common.exception.BizCodeEnume;
  3. import com.chuanghai.ihotel.common.exception.RRException;
  4. import com.chuanghai.ihotel.component.WaterElectricComponent;
  5. import com.chuanghai.ihotel.entity.RoomThirdSettingEntity;
  6. import com.chuanghai.ihotel.entity.SystemSettingEntity;
  7. import com.chuanghai.ihotel.service.RoomThirdSettingService;
  8. import com.chuanghai.ihotel.service.SystemSettingService;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  12. import com.baomidou.mybatisplus.core.metadata.IPage;
  13. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  14. import com.chuanghai.ihotel.common.utils.PageUtils;
  15. import com.chuanghai.ihotel.common.utils.MyQuery;
  16. import com.chuanghai.ihotel.common.utils.PageParam;
  17. import com.chuanghai.ihotel.dao.HotelOrderBillDao;
  18. import com.chuanghai.ihotel.entity.HotelOrderBillEntity;
  19. import com.chuanghai.ihotel.service.HotelOrderBillService;
  20. import org.springframework.util.StringUtils;
  21. import java.math.BigDecimal;
  22. @Service("hotelOrderBillService")
  23. public class HotelOrderBillServiceImpl extends ServiceImpl<HotelOrderBillDao, HotelOrderBillEntity> implements HotelOrderBillService {
  24. @Autowired
  25. private SystemSettingService systemSettingService;
  26. @Autowired
  27. private RoomThirdSettingService roomWaterElectricService;
  28. @Autowired
  29. private WaterElectricComponent waterElectricComponent;
  30. @Override
  31. public PageUtils queryPage(PageParam pageParam) {
  32. IPage<HotelOrderBillEntity> page = this.page(
  33. new MyQuery<HotelOrderBillEntity>().getPage(pageParam),
  34. new QueryWrapper<>()
  35. );
  36. return new PageUtils(page);
  37. }
  38. @Override
  39. public HotelOrderBillEntity findByOrderId(Long orderId) {
  40. QueryWrapper<HotelOrderBillEntity> queryWrapper = new QueryWrapper<>();
  41. queryWrapper.eq("hotel_order_id", orderId);
  42. queryWrapper.last("limit 1");
  43. return this.getOne(queryWrapper);
  44. }
  45. @Override
  46. public void generateBill(Long orderId, Long roomId) {
  47. // 系统设置
  48. SystemSettingEntity systemSetting = systemSettingService.get();
  49. // 水电抄表
  50. RoomThirdSettingEntity waterElectricEntity = roomWaterElectricService.findByRoomId(roomId);
  51. if (waterElectricEntity == null) {
  52. throw new RRException(BizCodeEnume.PERMISSION_DENIED, "房间水电表数据读取失败");
  53. }
  54. String electricData = waterElectricComponent.queryPowerRealTimeData(waterElectricEntity.getElectricId());
  55. if (!StringUtils.hasText(electricData)) {
  56. throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "读取电表数据异常");
  57. }
  58. String waterData = waterElectricComponent.queryLastHistoryCumulantInfo(waterElectricEntity.getWaterId());
  59. if (!StringUtils.hasText(waterData)) {
  60. throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "读取电表数据异常");
  61. }
  62. // 生成结账单
  63. HotelOrderBillEntity orderBill = new HotelOrderBillEntity();
  64. orderBill.setHotelOrderId(orderId);
  65. orderBill.setRoomId(roomId);
  66. orderBill.setPriceOfElectric(systemSetting.getPriceOfElectric().toString());
  67. orderBill.setPriceOfWater(systemSetting.getPriceOfWater().toString());
  68. orderBill.setStartOfElectric(electricData);
  69. orderBill.setStartOfWater(waterData);
  70. orderBill.setTotalFree(new BigDecimal("0"));
  71. orderBill.setDiscountFree(systemSetting.getFreeTotal());
  72. orderBill.setShouldFree(new BigDecimal("0"));
  73. orderBill.setRealFree(new BigDecimal("0"));
  74. orderBill.setStatu("1"); // 1待处理 初始值、2已完成
  75. this.save(orderBill);
  76. }
  77. }