package com.chuanghai.ihotel.service.impl; import com.chuanghai.ihotel.common.exception.BizCodeEnume; import com.chuanghai.ihotel.common.exception.RRException; import com.chuanghai.ihotel.component.WaterElectricComponent; import com.chuanghai.ihotel.entity.RoomThirdSettingEntity; import com.chuanghai.ihotel.entity.SystemSettingEntity; import com.chuanghai.ihotel.service.RoomThirdSettingService; import com.chuanghai.ihotel.service.SystemSettingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chuanghai.ihotel.common.utils.PageUtils; import com.chuanghai.ihotel.common.utils.MyQuery; import com.chuanghai.ihotel.common.utils.PageParam; import com.chuanghai.ihotel.dao.HotelOrderBillDao; import com.chuanghai.ihotel.entity.HotelOrderBillEntity; import com.chuanghai.ihotel.service.HotelOrderBillService; import org.springframework.util.StringUtils; import java.math.BigDecimal; @Service("hotelOrderBillService") public class HotelOrderBillServiceImpl extends ServiceImpl implements HotelOrderBillService { @Autowired private SystemSettingService systemSettingService; @Autowired private RoomThirdSettingService roomWaterElectricService; @Autowired private WaterElectricComponent waterElectricComponent; @Override public PageUtils queryPage(PageParam pageParam) { IPage page = this.page( new MyQuery().getPage(pageParam), new QueryWrapper<>() ); return new PageUtils(page); } @Override public HotelOrderBillEntity findByOrderId(Long orderId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("hotel_order_id", orderId); queryWrapper.last("limit 1"); return this.getOne(queryWrapper); } @Override public void generateBill(Long orderId, Long roomId) { // 系统设置 SystemSettingEntity systemSetting = systemSettingService.get(); // 水电抄表 RoomThirdSettingEntity waterElectricEntity = roomWaterElectricService.findByRoomId(roomId); if (waterElectricEntity == null) { throw new RRException(BizCodeEnume.PERMISSION_DENIED, "房间水电表数据读取失败"); } String electricData = waterElectricComponent.queryPowerRealTimeData(waterElectricEntity.getElectricId()); if (!StringUtils.hasText(electricData)) { throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "读取电表数据异常"); } String waterData = waterElectricComponent.queryLastHistoryCumulantInfo(waterElectricEntity.getWaterId()); if (!StringUtils.hasText(waterData)) { throw new RRException(BizCodeEnume.UNKNOW_EXCEPTION, "读取电表数据异常"); } // 生成结账单 HotelOrderBillEntity orderBill = new HotelOrderBillEntity(); orderBill.setHotelOrderId(orderId); orderBill.setRoomId(roomId); orderBill.setPriceOfElectric(systemSetting.getPriceOfElectric().toString()); orderBill.setPriceOfWater(systemSetting.getPriceOfWater().toString()); orderBill.setStartOfElectric(electricData); orderBill.setStartOfWater(waterData); orderBill.setTotalFree(new BigDecimal("0")); orderBill.setDiscountFree(systemSetting.getFreeTotal()); orderBill.setShouldFree(new BigDecimal("0")); orderBill.setRealFree(new BigDecimal("0")); orderBill.setStatu("1"); // 1待处理 初始值、2已完成 this.save(orderBill); } }