gqx 2 years ago
parent
commit
e8dbba5976
26 changed files with 1179 additions and 32 deletions
  1. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomSchedule.java
  2. 2 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/FeeSubjectType.java
  3. 46 26
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleServiceImpl.java
  4. 97 3
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomCleanController.java
  5. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomCleanUseConsumableController.java
  6. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomConsumableController.java
  7. 245 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomLayoutInConsumableController.java
  8. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomClean.java
  9. 61 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomCleanUseConsumable.java
  10. 63 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomConsumable.java
  11. 65 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomLayoutInConsumable.java
  12. 36 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanMapper.java
  13. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanUseConsumableMapper.java
  14. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomConsumableMapper.java
  15. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomLayoutInConsumableMapper.java
  16. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomCleanUseConsumableMapper.xml
  17. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomConsumableMapper.xml
  18. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomLayoutInConsumableMapper.xml
  19. 6 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomCleanService.java
  20. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomCleanUseConsumableService.java
  21. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomConsumableService.java
  22. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomLayoutInConsumableService.java
  23. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomCleanServiceImpl.java
  24. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomCleanUseConsumableServiceImpl.java
  25. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomConsumableServiceImpl.java
  26. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomLayoutInConsumableServiceImpl.java

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomSchedule.java

@@ -84,7 +84,7 @@ public class BusMeetingRoomSchedule extends Model<BusMeetingRoomSchedule> {
     private LocalDateTime createTime;
 
     /**
-     * 支付类型 1 挂房账 2直接自付
+     * 支付类型 1直接自付 2挂房账
      */
     private Integer payType;
     /**

+ 2 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/FeeSubjectType.java

@@ -14,7 +14,8 @@ public enum FeeSubjectType {
     JIE_ZHANG(5,"结账收款"),
     SHANG_PIN(6,"商品"),
     DIAN_PIN(7,"点餐"),
-    YE_SHEN_FANG_FEI(8,"夜审房费");
+    YE_SHEN_FANG_FEI(8,"夜审房费"),
+    HUI_YI_SHI(9,"会议室");
 
     Integer key;
 

+ 46 - 26
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleServiceImpl.java

@@ -14,11 +14,14 @@ import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDetailDto;
 import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDto;
 import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.enums.CouponsKeyEnum;
+import org.jeecg.modules.business.enums.FeeSubjectType;
 import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleMapper;
+import org.jeecg.modules.business.service.IBusRoomBookingOrdersService;
 import org.jeecg.modules.business.vo.BusMeetingKeyValueVo;
 import org.jeecg.modules.business.vo.BusMeetingRoomScheduleDetailVo;
 import org.jeecg.modules.business.vo.BusMeetingRoomScheduleVo;
 import org.jeecg.modules.business.vo.MeetingRoomScheduleDetailVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -59,7 +62,8 @@ public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoo
 
         @Resource
         private BusMeetingRoomScheduleOrderDetailServiceImpl busMeetingRoomScheduleOrderDetailService;
-
+    @Resource
+    private IBusRoomBookingOrdersService busRoomBookingOrdersService;
 
     /**
      *
@@ -213,38 +217,54 @@ public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoo
      */
     @Transactional(rollbackFor = Exception.class)
     public Result settle(BusMeetingRoomSchedule busMeetingRoomSchedule) {
-        if (ObjectUtils.isEmpty(busMeetingRoomSchedule.getPaymentMethodList())) {
-            return Result.error("结算支付方式不能为空");
-        }
-        BigDecimal sum = busMeetingRoomSchedule.getAmount().subtract(busMeetingRoomSchedule.getPreferentialAmount());
-        if (sum.compareTo(BigDecimal.ZERO) < 0) {
-            return Result.error("优惠金额不能大于订单金额");
+        if (busMeetingRoomSchedule.getPayType().equals(1)) {
+            if (ObjectUtils.isEmpty(busMeetingRoomSchedule.getPaymentMethodList())) {
+                return Result.error("结算支付方式不能为空");
+            }
+            BigDecimal sum = busMeetingRoomSchedule.getAmount().subtract(busMeetingRoomSchedule.getPreferentialAmount());
+            if (sum.compareTo(BigDecimal.ZERO) < 0) {
+                return Result.error("优惠金额不能大于订单金额");
+            }
+            AtomicReference<BigDecimal> sumAmount = new AtomicReference<>(new BigDecimal(0));
+            busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
+                sumAmount.set(sumAmount.get().add(item.getAmount()));
+            });
+            if (sumAmount.get().compareTo(sum) != 0) {
+                return Result.error("输入必须等于结账应收金额");
+            }
         }
-        AtomicReference<BigDecimal> sumAmount = new AtomicReference<>(new BigDecimal(0));
-        busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
-            sumAmount.set(sumAmount.get().add(item.getAmount()));
-        });
-        if (sumAmount.get().compareTo(sum) != 0) {
-            return Result.error("输入必须等于结账应收金额");
+        if (busMeetingRoomSchedule.getPayType().equals(2)) {
+            if (ObjectUtils.isEmpty(busMeetingRoomSchedule.getSettleRoomOrderNo())) {
+                return Result.error("请选择入账人");
+            }
         }
         busMeetingRoomSchedule.setBillStatus(1);
         meetingRoomScheduleMapper.updateById(busMeetingRoomSchedule);
         LambdaQueryWrapper<BusMeetingRoomScheduleOrderDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(BusMeetingRoomScheduleOrderDetail::getMeetingRoomScheduleId, busMeetingRoomSchedule.getId());
         busMeetingRoomScheduleOrderDetailService.remove(lambdaQueryWrapper);
-        List<BusMeetingRoomScheduleOrderDetail> busMeetingRoomScheduleOrderDetailList = new ArrayList<>();
-        busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
-            if (item.getAmount().compareTo(BigDecimal.ZERO) > 0) {
-                BusMeetingRoomScheduleOrderDetail busMeetingRoomScheduleOrderDetail = new BusMeetingRoomScheduleOrderDetail();
-                busMeetingRoomScheduleOrderDetail.setHotelId(busMeetingRoomSchedule.getHotelId());
-                busMeetingRoomScheduleOrderDetail.setTenantId(busMeetingRoomSchedule.getTenantId());
-                busMeetingRoomScheduleOrderDetail.setMeetingRoomScheduleId(busMeetingRoomSchedule.getId());
-                busMeetingRoomScheduleOrderDetail.setAmount(item.getAmount());
-                busMeetingRoomScheduleOrderDetail.setPayWay(item.getId());
-                busMeetingRoomScheduleOrderDetailList.add(busMeetingRoomScheduleOrderDetail);
-            }
-        });
-        busMeetingRoomScheduleOrderDetailService.saveBatch(busMeetingRoomScheduleOrderDetailList);
+        if (busMeetingRoomSchedule.getPayType().equals(2)) {
+            List<BusOrderFee> fees = new ArrayList<>();
+            BusOrderFee busOrderFee = new BusOrderFee();
+            busOrderFee.setMoney(busMeetingRoomSchedule.getAmount());
+            busOrderFee.setSubjectType(FeeSubjectType.HUI_YI_SHI.getKey());
+            fees.add(busOrderFee);
+            busRoomBookingOrdersService.setLivingOrderFee(fees, busMeetingRoomSchedule.getSettleRoomOrderNo(), busMeetingRoomSchedule.getHotelId());
+        } else {
+            List<BusMeetingRoomScheduleOrderDetail> busMeetingRoomScheduleOrderDetailList = new ArrayList<>();
+            busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
+                if (item.getAmount().compareTo(BigDecimal.ZERO) > 0) {
+                    BusMeetingRoomScheduleOrderDetail busMeetingRoomScheduleOrderDetail = new BusMeetingRoomScheduleOrderDetail();
+                    busMeetingRoomScheduleOrderDetail.setHotelId(busMeetingRoomSchedule.getHotelId());
+                    busMeetingRoomScheduleOrderDetail.setTenantId(busMeetingRoomSchedule.getTenantId());
+                    busMeetingRoomScheduleOrderDetail.setMeetingRoomScheduleId(busMeetingRoomSchedule.getId());
+                    busMeetingRoomScheduleOrderDetail.setAmount(item.getAmount());
+                    busMeetingRoomScheduleOrderDetail.setPayWay(item.getId());
+                    busMeetingRoomScheduleOrderDetailList.add(busMeetingRoomScheduleOrderDetail);
+                }
+            });
+            busMeetingRoomScheduleOrderDetailService.saveBatch(busMeetingRoomScheduleOrderDetailList);
+        }
         return Result.ok("结算成功!");
     }
 }

+ 97 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomCleanController.java

@@ -1,9 +1,13 @@
 package org.jeecg.modules.fw.controller;
 
-import java.util.Arrays;
+import java.util.*;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -12,8 +16,7 @@ import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.service.IBusWaiterService;
 import org.jeecg.modules.fw.dto.RoomCleanDto;
 import org.jeecg.modules.fw.dto.RoomLockDto;
-import org.jeecg.modules.fw.entity.FwRoomClean;
-import org.jeecg.modules.fw.entity.FwRoomLock;
+import org.jeecg.modules.fw.entity.*;
 import org.jeecg.modules.fw.service.IFwRoomCleanService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,11 +24,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
+import org.jeecg.modules.fw.service.IFwRoomCleanUseConsumableService;
+import org.jeecg.modules.fw.service.IFwRoomConsumableService;
+import org.jeecg.modules.pos.entity.PosOrderGoodsPayment;
 import org.jeecg.modules.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.entity.CesRoomLayout;
 import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
 import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 import io.swagger.annotations.Api;
@@ -49,6 +59,12 @@ public class FwRoomCleanController extends JeecgController<FwRoomClean, IFwRoomC
 	 private CesRoomsServiceImpl cesRoomsService;
 	 @Autowired
 	 private IBusWaiterService busWaiterService;
+	 @Resource
+	 private CesRoomLayoutServiceImpl cesRoomLayoutService;
+	 @Resource
+	 private IFwRoomCleanUseConsumableService fwRoomCleanUseConsumableService;
+	 @Resource
+	 private IFwRoomConsumableService fwRoomConsumableService;
 	/**
 	 * 分页列表查询
 	 *
@@ -68,16 +84,77 @@ public class FwRoomCleanController extends JeecgController<FwRoomClean, IFwRoomC
 		QueryWrapper<FwRoomClean> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomClean, req.getParameterMap());
 		Page<FwRoomClean> page = new Page<FwRoomClean>(pageNo, pageSize);
 		IPage<FwRoomClean> pageList = fwRoomCleanService.page(page, queryWrapper);
+
+		LambdaQueryWrapper<FwRoomConsumable> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(FwRoomConsumable::getHotelId, fwRoomClean.getHotelId());
+		List<FwRoomConsumable> fwRoomConsumables = fwRoomConsumableService.list(lambdaQueryWrapper);
+
 		pageList.getRecords().forEach(item -> {
+			List<FwRoomCleanUseConsumable> list = new ArrayList<>();
 			BusWaiter waiter = busWaiterService.getById(item.getWaiterId());
 			if (waiter != null) {
 				item.setWaiterName(waiter.getName());
 			}
+			CesRooms rooms = cesRoomsService.getById(item.getRoomId());
+			if (rooms != null) {
+				CesRoomLayout layout = cesRoomLayoutService.getById(rooms.getLayoutId());
+				if (layout != null) {
+					item.setLayoutName(layout.getName());
+				}
+			}
+			LambdaQueryWrapper<FwRoomCleanUseConsumable> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper2.eq(FwRoomCleanUseConsumable::getRoomCleanId, item.getId());
+			List<FwRoomCleanUseConsumable> useConsumableList = fwRoomCleanUseConsumableService.list(lambdaQueryWrapper2);
+			fwRoomConsumables.forEach(u -> {
+				FwRoomCleanUseConsumable fwRoomCleanUseConsumable = new FwRoomCleanUseConsumable();
+				fwRoomCleanUseConsumable.setRoomConsumableId(u.getId());
+				fwRoomCleanUseConsumable.setNum(0);
+				fwRoomCleanUseConsumable.setRoomConsumable(u);
+				Optional<FwRoomCleanUseConsumable> optional = useConsumableList.stream().filter(f -> f.getRoomConsumableId().equals(u.getId())).findFirst();
+				if (optional.isPresent()) {
+					fwRoomCleanUseConsumable.setNum(optional.get().getNum());
+				}
+				list.add(fwRoomCleanUseConsumable);
+			});
+			item.setUseConsumableList(list);
 		});
 		return Result.OK(pageList);
 	}
 
 	/**
+	 * 房间消耗品汇总统计
+	 * @param startTime 开始日期
+	 * @param endTime 截至日期
+	 * @param hotelId
+	 * @param type 1易耗品 2布草
+	 * @return
+	 */
+	@ApiOperation(value = "房间消耗品汇总统计", notes = "房间消耗品汇总统计")
+	@GetMapping(value = "/roomUseConsumableSummary")
+	public Result<List<HashMap<String, Object>>> roomUseConsumableSummary(@RequestParam(name = "startTime") @JsonFormat(pattern = "yyyy-MM-dd")  @DateTimeFormat(pattern="yyyy-MM-dd") DateTime startTime,
+																			  @RequestParam(name = "endTime") @JsonFormat(pattern = "yyyy-MM-dd")  @DateTimeFormat(pattern="yyyy-MM-dd") DateTime endTime,
+																			  @RequestParam(name = "hotelId") String hotelId,@RequestParam(name = "type") Integer type) {
+		List<HashMap<String, Object>> pageList = fwRoomCleanService.roomUseConsumableSummary(type, hotelId, startTime, endTime);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 * 放扫记录汇总统计
+	 * @param startTime 开始日期
+	 * @param endTime 截至日期
+	 * @param hotelId
+	 * @return
+	 */
+	@ApiOperation(value = "放扫记录汇总统计", notes = "放扫记录汇总统计")
+	@GetMapping(value = "/roomCleanSummary")
+	public Result<List<HashMap<String, Object>>> roomCleanSummary(@RequestParam(name = "startTime") @JsonFormat(pattern = "yyyy-MM-dd")  @DateTimeFormat(pattern="yyyy-MM-dd") DateTime startTime,
+																			 @RequestParam(name = "endTime") @JsonFormat(pattern = "yyyy-MM-dd")  @DateTimeFormat(pattern="yyyy-MM-dd") DateTime endTime,
+																			 @RequestParam(name = "hotelId") String hotelId) {
+		List<HashMap<String, Object>> pageList = fwRoomCleanService.roomCleanSummary( hotelId, startTime, endTime);
+		return Result.OK(pageList);
+	}
+
+	/**
 	 *   添加
 	 *
 	 * @param dto
@@ -133,7 +210,24 @@ public class FwRoomCleanController extends JeecgController<FwRoomClean, IFwRoomC
 	@ApiOperation(value="fw_room_clean-编辑", notes="fw_room_clean-编辑")
 	//@RequiresPermissions("fw:fw_room_clean:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	@Transactional(rollbackFor = Exception.class)
 	public Result<String> edit(@RequestBody FwRoomClean fwRoomClean) {
+		LambdaQueryWrapper<FwRoomCleanUseConsumable> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper2.eq(FwRoomCleanUseConsumable::getRoomCleanId, fwRoomClean.getId());
+		fwRoomCleanUseConsumableService.remove(lambdaQueryWrapper2);
+		List<FwRoomCleanUseConsumable> fwRoomCleanUseConsumables = new ArrayList<>();
+		fwRoomClean.getUseConsumableList().forEach(t -> {
+			if (t.getNum() > 0) {
+				FwRoomCleanUseConsumable fwRoomCleanUseConsumable = new FwRoomCleanUseConsumable();
+				fwRoomCleanUseConsumable.setHotelId(fwRoomClean.getHotelId());
+				fwRoomCleanUseConsumable.setTenantId(fwRoomClean.getTenantId());
+				fwRoomCleanUseConsumable.setRoomCleanId(fwRoomClean.getId());
+				fwRoomCleanUseConsumable.setRoomConsumableId(t.getRoomConsumableId());
+				fwRoomCleanUseConsumable.setNum(t.getNum());
+				fwRoomCleanUseConsumables.add(fwRoomCleanUseConsumable);
+			}
+		});
+		fwRoomCleanUseConsumableService.saveBatch(fwRoomCleanUseConsumables);
 		fwRoomCleanService.updateById(fwRoomClean);
 		return Result.OK("编辑成功!");
 	}

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomCleanUseConsumableController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.fw.entity.FwRoomCleanUseConsumable;
+import org.jeecg.modules.fw.service.IFwRoomCleanUseConsumableService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: fw_room_clean_use_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_clean_use_consumable")
+@RestController
+@RequestMapping("/fw/fwRoomCleanUseConsumable")
+@Slf4j
+public class FwRoomCleanUseConsumableController extends JeecgController<FwRoomCleanUseConsumable, IFwRoomCleanUseConsumableService> {
+	@Autowired
+	private IFwRoomCleanUseConsumableService fwRoomCleanUseConsumableService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomCleanUseConsumable
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_clean_use_consumable-分页列表查询")
+	@ApiOperation(value="fw_room_clean_use_consumable-分页列表查询", notes="fw_room_clean_use_consumable-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomCleanUseConsumable>> queryPageList(FwRoomCleanUseConsumable fwRoomCleanUseConsumable,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomCleanUseConsumable> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomCleanUseConsumable, req.getParameterMap());
+		Page<FwRoomCleanUseConsumable> page = new Page<FwRoomCleanUseConsumable>(pageNo, pageSize);
+		IPage<FwRoomCleanUseConsumable> pageList = fwRoomCleanUseConsumableService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param fwRoomCleanUseConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean_use_consumable-添加")
+	@ApiOperation(value="fw_room_clean_use_consumable-添加", notes="fw_room_clean_use_consumable-添加")
+	//@RequiresPermissions("fw:fw_room_clean_use_consumable:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody FwRoomCleanUseConsumable fwRoomCleanUseConsumable) {
+		fwRoomCleanUseConsumableService.save(fwRoomCleanUseConsumable);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomCleanUseConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean_use_consumable-编辑")
+	@ApiOperation(value="fw_room_clean_use_consumable-编辑", notes="fw_room_clean_use_consumable-编辑")
+	//@RequiresPermissions("fw:fw_room_clean_use_consumable:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomCleanUseConsumable fwRoomCleanUseConsumable) {
+		fwRoomCleanUseConsumableService.updateById(fwRoomCleanUseConsumable);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean_use_consumable-通过id删除")
+	@ApiOperation(value="fw_room_clean_use_consumable-通过id删除", notes="fw_room_clean_use_consumable-通过id删除")
+	//@RequiresPermissions("fw:fw_room_clean_use_consumable:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomCleanUseConsumableService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean_use_consumable-批量删除")
+	@ApiOperation(value="fw_room_clean_use_consumable-批量删除", notes="fw_room_clean_use_consumable-批量删除")
+	//@RequiresPermissions("fw:fw_room_clean_use_consumable:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomCleanUseConsumableService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_clean_use_consumable-通过id查询")
+	@ApiOperation(value="fw_room_clean_use_consumable-通过id查询", notes="fw_room_clean_use_consumable-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomCleanUseConsumable> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomCleanUseConsumable fwRoomCleanUseConsumable = fwRoomCleanUseConsumableService.getById(id);
+		if(fwRoomCleanUseConsumable==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomCleanUseConsumable);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomCleanUseConsumable
+    */
+    //@RequiresPermissions("fw:fw_room_clean_use_consumable:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomCleanUseConsumable fwRoomCleanUseConsumable) {
+        return super.exportXls(request, fwRoomCleanUseConsumable, FwRoomCleanUseConsumable.class, "fw_room_clean_use_consumable");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_clean_use_consumable:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomCleanUseConsumable.class);
+    }
+
+}

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomConsumableController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.fw.entity.FwRoomConsumable;
+import org.jeecg.modules.fw.service.IFwRoomConsumableService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: fw_room_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_consumable")
+@RestController
+@RequestMapping("/fw/fwRoomConsumable")
+@Slf4j
+public class FwRoomConsumableController extends JeecgController<FwRoomConsumable, IFwRoomConsumableService> {
+	@Autowired
+	private IFwRoomConsumableService fwRoomConsumableService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomConsumable
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_consumable-分页列表查询")
+	@ApiOperation(value="fw_room_consumable-分页列表查询", notes="fw_room_consumable-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomConsumable>> queryPageList(FwRoomConsumable fwRoomConsumable,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomConsumable> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomConsumable, req.getParameterMap());
+		Page<FwRoomConsumable> page = new Page<FwRoomConsumable>(pageNo, pageSize);
+		IPage<FwRoomConsumable> pageList = fwRoomConsumableService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param fwRoomConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_consumable-添加")
+	@ApiOperation(value="fw_room_consumable-添加", notes="fw_room_consumable-添加")
+	//@RequiresPermissions("fw:fw_room_consumable:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody FwRoomConsumable fwRoomConsumable) {
+		fwRoomConsumableService.save(fwRoomConsumable);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_consumable-编辑")
+	@ApiOperation(value="fw_room_consumable-编辑", notes="fw_room_consumable-编辑")
+	//@RequiresPermissions("fw:fw_room_consumable:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomConsumable fwRoomConsumable) {
+		fwRoomConsumableService.updateById(fwRoomConsumable);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_consumable-通过id删除")
+	@ApiOperation(value="fw_room_consumable-通过id删除", notes="fw_room_consumable-通过id删除")
+	//@RequiresPermissions("fw:fw_room_consumable:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomConsumableService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_consumable-批量删除")
+	@ApiOperation(value="fw_room_consumable-批量删除", notes="fw_room_consumable-批量删除")
+	//@RequiresPermissions("fw:fw_room_consumable:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomConsumableService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_consumable-通过id查询")
+	@ApiOperation(value="fw_room_consumable-通过id查询", notes="fw_room_consumable-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomConsumable> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomConsumable fwRoomConsumable = fwRoomConsumableService.getById(id);
+		if(fwRoomConsumable==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomConsumable);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomConsumable
+    */
+    //@RequiresPermissions("fw:fw_room_consumable:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomConsumable fwRoomConsumable) {
+        return super.exportXls(request, fwRoomConsumable, FwRoomConsumable.class, "fw_room_consumable");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_consumable:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomConsumable.class);
+    }
+
+}

+ 245 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomLayoutInConsumableController.java

@@ -0,0 +1,245 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.fw.entity.FwRoomCleanUseConsumable;
+import org.jeecg.modules.fw.entity.FwRoomConsumable;
+import org.jeecg.modules.fw.entity.FwRoomLayoutInConsumable;
+import org.jeecg.modules.fw.service.IFwRoomConsumableService;
+import org.jeecg.modules.fw.service.IFwRoomLayoutInConsumableService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: fw_room_layout_in_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_layout_in_consumable")
+@RestController
+@RequestMapping("/fw/fwRoomLayoutInConsumable")
+@Slf4j
+public class FwRoomLayoutInConsumableController extends JeecgController<FwRoomLayoutInConsumable, IFwRoomLayoutInConsumableService> {
+	@Autowired
+	private IFwRoomLayoutInConsumableService fwRoomLayoutInConsumableService;
+	@Resource
+	private IFwRoomConsumableService fwRoomConsumableService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomLayoutInConsumable
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_layout_in_consumable-分页列表查询")
+	@ApiOperation(value="fw_room_layout_in_consumable-分页列表查询", notes="fw_room_layout_in_consumable-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomLayoutInConsumable>> queryPageList(FwRoomLayoutInConsumable fwRoomLayoutInConsumable,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomLayoutInConsumable> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomLayoutInConsumable, req.getParameterMap());
+		Page<FwRoomLayoutInConsumable> page = new Page<FwRoomLayoutInConsumable>(pageNo, pageSize);
+		IPage<FwRoomLayoutInConsumable> pageList = fwRoomLayoutInConsumableService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+
+	 /**
+	  * 根据房型查询配置易耗品列表
+	  * @param type 类型 1续房 2退房
+	  * @param roomLayoutId 房型id
+	  * @param hotelId
+	  * @return
+	  */
+	 @ApiOperation(value="根据房型查询配置易耗品列表")
+	 @GetMapping(value = "/layoutInConsumableList")
+	 public Result<List<FwRoomLayoutInConsumable>> layoutInConsumableList(@RequestParam(name="type") Integer type,
+																  @RequestParam(name="roomLayoutId") String roomLayoutId,@RequestParam(name="hotelId") String hotelId) {
+		 LambdaQueryWrapper<FwRoomLayoutInConsumable> queryWrapper = new LambdaQueryWrapper<>();
+		 queryWrapper.eq(FwRoomLayoutInConsumable::getHotelId, hotelId);
+		 queryWrapper.eq(FwRoomLayoutInConsumable::getType, type);
+		 queryWrapper.eq(FwRoomLayoutInConsumable::getRoomLayoutId, roomLayoutId);
+		 List<FwRoomLayoutInConsumable> fwRoomLayoutInConsumableList = fwRoomLayoutInConsumableService.list(queryWrapper);
+
+		 LambdaQueryWrapper<FwRoomConsumable> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 lambdaQueryWrapper.eq(FwRoomConsumable::getHotelId, hotelId);
+		 List<FwRoomConsumable> fwRoomConsumables = fwRoomConsumableService.list(lambdaQueryWrapper);
+		 List<FwRoomLayoutInConsumable> list = new ArrayList<>();
+		 fwRoomConsumables.forEach(t -> {
+			 FwRoomLayoutInConsumable roomLayoutInConsumable = new FwRoomLayoutInConsumable();
+			 roomLayoutInConsumable.setRoomConsumableId(t.getId());
+			 roomLayoutInConsumable.setType(t.getType());
+			 roomLayoutInConsumable.setGoodName(t.getGoodName());
+			 roomLayoutInConsumable.setNum(0);
+			 Optional<FwRoomLayoutInConsumable> optional = fwRoomLayoutInConsumableList.stream().filter(f -> f.getRoomConsumableId().equals(t.getId()) && f.getHotelId().equals(t.getHotelId())&&f.getRoomLayoutId().equals(roomLayoutId)).findFirst();
+			 if (optional.isPresent()) {
+				 roomLayoutInConsumable.setNum(optional.get().getNum());
+			 }
+			 list.add(roomLayoutInConsumable);
+		 });
+		 return Result.OK(list);
+	 }
+
+	 /**
+	  * 根据房型保存配置易耗品
+	  * @param fwRoomLayoutInConsumableList
+	  * @return
+	  */
+	 @ApiOperation(value="根据房型保存配置易耗品")
+	 @PostMapping(value = "/layoutInConsumableSave")
+	 public Result<String> layoutInConsumableSave(@RequestBody List<FwRoomLayoutInConsumable> fwRoomLayoutInConsumableList,@RequestParam(name="hotelId") String hotelId) {
+		 List<FwRoomLayoutInConsumable> list = new ArrayList<>();
+		 fwRoomLayoutInConsumableList.forEach(t -> {
+			 if (t.getNum() > 0) {
+				 t.setHotelId(hotelId);
+				 t.setTenantId(TokenUtils.currentTenantId());
+				 list.add(t);
+			 }
+		 });
+		 LambdaQueryWrapper<FwRoomLayoutInConsumable> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+		 lambdaQueryWrapper.eq(FwRoomLayoutInConsumable::getRoomLayoutId,fwRoomLayoutInConsumableList.get(0).getRoomLayoutId());
+		 fwRoomLayoutInConsumableService.remove(lambdaQueryWrapper);
+		 fwRoomLayoutInConsumableService.saveBatch(list);
+		 return Result.OK("添加成功!");
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param fwRoomLayoutInConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_layout_in_consumable-添加")
+	@ApiOperation(value="fw_room_layout_in_consumable-添加", notes="fw_room_layout_in_consumable-添加")
+	//@RequiresPermissions("fw:fw_room_layout_in_consumable:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody FwRoomLayoutInConsumable fwRoomLayoutInConsumable) {
+		fwRoomLayoutInConsumableService.save(fwRoomLayoutInConsumable);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomLayoutInConsumable
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_layout_in_consumable-编辑")
+	@ApiOperation(value="fw_room_layout_in_consumable-编辑", notes="fw_room_layout_in_consumable-编辑")
+	//@RequiresPermissions("fw:fw_room_layout_in_consumable:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomLayoutInConsumable fwRoomLayoutInConsumable) {
+		fwRoomLayoutInConsumableService.updateById(fwRoomLayoutInConsumable);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_layout_in_consumable-通过id删除")
+	@ApiOperation(value="fw_room_layout_in_consumable-通过id删除", notes="fw_room_layout_in_consumable-通过id删除")
+	//@RequiresPermissions("fw:fw_room_layout_in_consumable:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomLayoutInConsumableService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_layout_in_consumable-批量删除")
+	@ApiOperation(value="fw_room_layout_in_consumable-批量删除", notes="fw_room_layout_in_consumable-批量删除")
+	//@RequiresPermissions("fw:fw_room_layout_in_consumable:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomLayoutInConsumableService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_layout_in_consumable-通过id查询")
+	@ApiOperation(value="fw_room_layout_in_consumable-通过id查询", notes="fw_room_layout_in_consumable-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomLayoutInConsumable> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomLayoutInConsumable fwRoomLayoutInConsumable = fwRoomLayoutInConsumableService.getById(id);
+		if(fwRoomLayoutInConsumable==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomLayoutInConsumable);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomLayoutInConsumable
+    */
+    //@RequiresPermissions("fw:fw_room_layout_in_consumable:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomLayoutInConsumable fwRoomLayoutInConsumable) {
+        return super.exportXls(request, fwRoomLayoutInConsumable, FwRoomLayoutInConsumable.class, "fw_room_layout_in_consumable");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_layout_in_consumable:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomLayoutInConsumable.class);
+    }
+
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomClean.java

@@ -4,6 +4,7 @@ import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.math.BigDecimal;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
@@ -68,6 +69,23 @@ public class FwRoomClean implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    /**审核状态 0待审核 1已审核 2审核不通过*/
+    @Excel(name = "审核状态 0待审核 1已审核 2审核不通过", width = 15)
+    @ApiModelProperty(value = "审核状态 0待审核 1已审核 2审核不通过")
+    private Integer verifyState;
+    /**房间状态 1退房 2续房*/
+    @Excel(name = "房间状态 1退房 2续房", width = 15)
+    @ApiModelProperty(value = "房间状态 1退房 2续房")
+    private Integer roomState;
+
     @TableField(exist = false)
     private String waiterName;
+
+    @ApiModelProperty(value = "房型")
+    @TableField(exist = false)
+    private String layoutName;
+
+    @ApiModelProperty(value = "消耗商品列表")
+    @TableField(exist = false)
+    private List<FwRoomCleanUseConsumable> useConsumableList;
 }

+ 61 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomCleanUseConsumable.java

@@ -0,0 +1,61 @@
+package org.jeecg.modules.fw.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: fw_room_clean_use_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_clean_use_consumable")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_clean_use_consumable对象", description="fw_room_clean_use_consumable")
+public class FwRoomCleanUseConsumable implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**房扫id*/
+	@Excel(name = "房扫id", width = 15)
+    @ApiModelProperty(value = "房扫id")
+    private String roomCleanId;
+	/**易耗品id*/
+	@Excel(name = "易耗品id", width = 15)
+    @ApiModelProperty(value = "易耗品id")
+    private String roomConsumableId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+
+	@TableField(exist = false)
+    @ApiModelProperty(value = "易耗品信息")
+	private FwRoomConsumable roomConsumable;
+}

+ 63 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomConsumable.java

@@ -0,0 +1,63 @@
+package org.jeecg.modules.fw.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: fw_room_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_consumable")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_consumable对象", description="fw_room_consumable")
+public class FwRoomConsumable implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**商品名称*/
+	@Excel(name = "商品名称", width = 15)
+    @ApiModelProperty(value = "商品名称")
+    private String goodName;
+	/**商品规格*/
+	@Excel(name = "商品规格", width = 15)
+    @ApiModelProperty(value = "商品规格")
+    private String goodSpe;
+	/**类型 1客房易耗品 2布草*/
+	@Excel(name = "类型 1客房易耗品 2布草", width = 15)
+    @ApiModelProperty(value = "类型 1客房易耗品 2布草")
+    private Integer type;
+	/**单位*/
+	@Excel(name = "单位", width = 15)
+    @ApiModelProperty(value = "单位")
+    private String unit;
+}

+ 65 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomLayoutInConsumable.java

@@ -0,0 +1,65 @@
+package org.jeecg.modules.fw.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: fw_room_layout_in_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_layout_in_consumable")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_layout_in_consumable对象", description="fw_room_layout_in_consumable")
+public class FwRoomLayoutInConsumable implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**易耗品id*/
+	@Excel(name = "易耗品id", width = 15)
+    @ApiModelProperty(value = "易耗品id")
+    private String roomConsumableId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+	/**房型id*/
+	@Excel(name = "房型id", width = 15)
+    @ApiModelProperty(value = "房型id")
+    private String roomLayoutId;
+    /**类型 1续房 2退房*/
+    @Excel(name = "类型 1续房 2退房", width = 15)
+    @ApiModelProperty(value = "类型 1续房 2退房")
+    private Integer type;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "商品名称")
+    private String goodName;
+}

+ 36 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanMapper.java

@@ -1,8 +1,11 @@
 package org.jeecg.modules.fw.mapper;
 
+import java.util.HashMap;
 import java.util.List;
 
+import cn.hutool.core.date.DateTime;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.fw.entity.FwRoomClean;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -14,4 +17,37 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface FwRoomCleanMapper extends BaseMapper<FwRoomClean> {
 
+    /**
+     * 房间消耗品汇总统计
+     * @param type
+     * @param hotelId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @Select("<script>select max(c.good_name) as good_name,sum(uc.num) as num,max(c.unit) as unit from  fw_room_clean_use_consumable  uc inner join fw_room_consumable c\n" +
+            "on c.id=uc.room_consumable_id\n" +
+            "inner join fw_room_clean cl on cl.id=uc.room_clean_id\n" +
+            "where c.hotel_id=#{hotelId} and c.type=#{type} and uc.num>0 \n" +
+            "<if test='startTime != null'> and cl.create_time &gt;= #{startTime} </if>" +
+            "<if test='endTime != null'> and cl.create_time &lt;= #{endTime} </if>" +
+            "group by uc.room_consumable_id</script>")
+    public List<HashMap<String, Object>> roomUseConsumableSummary(@Param("type") Integer type, @Param("hotelId") String hotelId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
+
+    /**
+     * 放扫记录汇总
+     * @param hotelId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @Select("<script>select max(w.name) as waiter_name,sum(case cl.room_state when 1 then 1 else 0 end) as tf_num,sum(case cl.room_state when 2 then 1 else 0 end) as xf_num,\n" +
+            "0 as zd_num,0 as tc_num,count(0) as count,0 as tc_money\n" +
+            "from fw_room_clean cl\n" +
+            "inner join bus_waiter_info w on w.id=cl.waiter_id\n" +
+            "where cl.hotel_id=#{hotelId} and cl.verify_state=1\n" +
+            "<if test='startTime != null'> and cl.create_time &gt;= #{startTime} </if>" +
+            "<if test='endTime != null'> and cl.create_time &lt;= #{endTime} </if>" +
+            "group by cl.waiter_id</script>")
+    public List<HashMap<String, Object>> roomCleanSummary(@Param("hotelId") String hotelId, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime);
 }

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanUseConsumableMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.fw.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.fw.entity.FwRoomCleanUseConsumable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_clean_use_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface FwRoomCleanUseConsumableMapper extends BaseMapper<FwRoomCleanUseConsumable> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomConsumableMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.fw.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.fw.entity.FwRoomConsumable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface FwRoomConsumableMapper extends BaseMapper<FwRoomConsumable> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomLayoutInConsumableMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.fw.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.fw.entity.FwRoomLayoutInConsumable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_layout_in_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface FwRoomLayoutInConsumableMapper extends BaseMapper<FwRoomLayoutInConsumable> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomCleanUseConsumableMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.fw.mapper.FwRoomCleanUseConsumableMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomConsumableMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.fw.mapper.FwRoomConsumableMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomLayoutInConsumableMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.fw.mapper.FwRoomLayoutInConsumableMapper">
+
+</mapper>

+ 6 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomCleanService.java

@@ -1,8 +1,12 @@
 package org.jeecg.modules.fw.service;
 
+import cn.hutool.core.date.DateTime;
 import org.jeecg.modules.fw.entity.FwRoomClean;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * @Description: fw_room_clean
  * @Author: jeecg-boot
@@ -10,5 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface IFwRoomCleanService extends IService<FwRoomClean> {
-
+    List<HashMap<String, Object>> roomUseConsumableSummary(Integer type, String hotelId, DateTime startTime, DateTime endTime);
+    List<HashMap<String, Object>> roomCleanSummary(String hotelId, DateTime startTime, DateTime endTime);
 }

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomCleanUseConsumableService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomCleanUseConsumable;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_clean_use_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface IFwRoomCleanUseConsumableService extends IService<FwRoomCleanUseConsumable> {
+
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomConsumableService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomConsumable;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface IFwRoomConsumableService extends IService<FwRoomConsumable> {
+
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomLayoutInConsumableService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomLayoutInConsumable;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_layout_in_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+public interface IFwRoomLayoutInConsumableService extends IService<FwRoomLayoutInConsumable> {
+
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomCleanServiceImpl.java

@@ -1,5 +1,10 @@
 package org.jeecg.modules.fw.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.business.entity.BusRoomPayType;
+import org.jeecg.modules.finance.mapper.SummaryMapper;
 import org.jeecg.modules.fw.entity.FwRoomClean;
 import org.jeecg.modules.fw.mapper.FwRoomCleanMapper;
 import org.jeecg.modules.fw.service.IFwRoomCleanService;
@@ -7,6 +12,10 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * @Description: fw_room_clean
  * @Author: jeecg-boot
@@ -15,5 +24,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  */
 @Service
 public class FwRoomCleanServiceImpl extends ServiceImpl<FwRoomCleanMapper, FwRoomClean> implements IFwRoomCleanService {
+    @Resource
+    private FwRoomCleanMapper fwRoomCleanMapper;
+
+    public List<HashMap<String, Object>> roomUseConsumableSummary(Integer type, String hotelId, DateTime startTime, DateTime endTime) {
+        return fwRoomCleanMapper.roomUseConsumableSummary(type, hotelId, startTime, endTime);
+    }
 
+    public List<HashMap<String, Object>> roomCleanSummary(String hotelId, DateTime startTime, DateTime endTime) {
+        return fwRoomCleanMapper.roomCleanSummary(hotelId, startTime, endTime);
+    }
 }

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomCleanUseConsumableServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomCleanUseConsumable;
+import org.jeecg.modules.fw.mapper.FwRoomCleanUseConsumableMapper;
+import org.jeecg.modules.fw.service.IFwRoomCleanUseConsumableService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_clean_use_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomCleanUseConsumableServiceImpl extends ServiceImpl<FwRoomCleanUseConsumableMapper, FwRoomCleanUseConsumable> implements IFwRoomCleanUseConsumableService {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomConsumableServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomConsumable;
+import org.jeecg.modules.fw.mapper.FwRoomConsumableMapper;
+import org.jeecg.modules.fw.service.IFwRoomConsumableService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomConsumableServiceImpl extends ServiceImpl<FwRoomConsumableMapper, FwRoomConsumable> implements IFwRoomConsumableService {
+
+}

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomLayoutInConsumableServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomLayoutInConsumable;
+import org.jeecg.modules.fw.mapper.FwRoomLayoutInConsumableMapper;
+import org.jeecg.modules.fw.service.IFwRoomLayoutInConsumableService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_layout_in_consumable
+ * @Author: jeecg-boot
+ * @Date:   2023-05-25
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomLayoutInConsumableServiceImpl extends ServiceImpl<FwRoomLayoutInConsumableMapper, FwRoomLayoutInConsumable> implements IFwRoomLayoutInConsumableService {
+
+}