Browse Source

Merge branch 'master' of http://49.4.53.36:3000/hotel/hotel-saas-backend

qh 2 years ago
parent
commit
94aefa3863
100 changed files with 6895 additions and 14 deletions
  1. 265 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementContactsController.java
  2. 340 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementCustomerController.java
  3. 191 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementCustomerHousePriceController.java
  4. 138 2
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementUnitController.java
  5. 22 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusOrderSoundController.java
  6. 70 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMarketAgreementCheckInRecordDto.java
  7. 131 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementContacts.java
  8. 143 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementCustomer.java
  9. 107 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementCustomerHousePrice.java
  10. 10 7
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementUnit.java
  11. 53 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/AgreementCommonEnum.java
  12. 52 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/CommissionTypeEnum.java
  13. 52 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/CommissionUnitEnum.java
  14. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementCheckInRecordMapper.java
  15. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementContactsMapper.java
  16. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementCustomerHousePriceMapper.java
  17. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementCustomerMapper.java
  18. 3 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementUnitMapper.java
  19. 2 2
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketCouponsCashUsedMapper.java
  20. 77 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCheckInRecordMapper.xml
  21. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementContactsMapper.xml
  22. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCustomerHousePriceMapper.xml
  23. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCustomerMapper.xml
  24. 29 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementUnitMapper.xml
  25. 0 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusHotelService.java
  26. 12 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementCheckInRecordService.java
  27. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementContactsService.java
  28. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementCustomerHousePriceService.java
  29. 28 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementCustomerService.java
  30. 4 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementUnitService.java
  31. 28 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementCheckInRecordServiceImpl.java
  32. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementContactsServiceImpl.java
  33. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementCustomerHousePriceServiceImpl.java
  34. 96 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementCustomerServiceImpl.java
  35. 3 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMarketAgreementUnitServiceImpl.java
  36. 5 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java
  37. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/AgreementCustomerHousePriceVo.java
  38. 203 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomCleanController.java
  39. 229 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomLockController.java
  40. 230 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/controller/FwRoomRepairController.java
  41. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomCleanDto.java
  42. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomLockDto.java
  43. 25 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomRepairDto.java
  44. 67 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomClean.java
  45. 59 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomLock.java
  46. 75 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/entity/FwRoomRepair.java
  47. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanMapper.java
  48. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomLockMapper.java
  49. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomRepairMapper.java
  50. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomCleanMapper.xml
  51. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomLockMapper.xml
  52. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomRepairMapper.xml
  53. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomCleanService.java
  54. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomLockService.java
  55. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/IFwRoomRepairService.java
  56. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomCleanServiceImpl.java
  57. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomLockServiceImpl.java
  58. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/service/impl/FwRoomRepairServiceImpl.java
  59. 180 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosMealSectionController.java
  60. 343 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsController.java
  61. 190 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsDetailController.java
  62. 230 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsPaymentController.java
  63. 199 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosRegionController.java
  64. 234 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosSellClearGoodsController.java
  65. 280 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableController.java
  66. 198 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableTypeController.java
  67. 243 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableTypeInGoodsController.java
  68. 225 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosThaliController.java
  69. 193 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosThaliInGoodsController.java
  70. 180 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTypeController.java
  71. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/dto/OrderPaymentDto.java
  72. 59 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosMealSection.java
  73. 119 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoods.java
  74. 72 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoodsDetail.java
  75. 64 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoodsPayment.java
  76. 57 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosRegion.java
  77. 51 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosSellClearGoods.java
  78. 96 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosTable.java
  79. 56 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosTableType.java
  80. 65 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosTableTypeInGoods.java
  81. 77 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosThali.java
  82. 71 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosThaliInGoods.java
  83. 59 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosType.java
  84. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosMealSectionMapper.java
  85. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosOrderGoodsDetailMapper.java
  86. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosOrderGoodsMapper.java
  87. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosOrderGoodsPaymentMapper.java
  88. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosRegionMapper.java
  89. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosSellClearGoodsMapper.java
  90. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosTableMapper.java
  91. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosTableTypeInGoodsMapper.java
  92. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosTableTypeMapper.java
  93. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosThaliInGoodsMapper.java
  94. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosThaliMapper.java
  95. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/PosTypeMapper.java
  96. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosMealSectionMapper.xml
  97. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsDetailMapper.xml
  98. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsMapper.xml
  99. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsPaymentMapper.xml
  100. 0 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosRegionMapper.xml

+ 265 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementContactsController.java

@@ -0,0 +1,265 @@
+package org.jeecg.modules.business.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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+
+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.jeecg.modules.business.entity.BusMarketAgreementContacts;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomer;
+import org.jeecg.modules.business.entity.BusOrderSound;
+import org.jeecg.modules.business.service.IBusMarketAgreementContactsService;
+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: 协议单位-联系人
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="协议单位-联系人")
+@RestController
+@RequestMapping("/business/busMarketAgreementContacts")
+@Slf4j
+public class BusMarketAgreementContactsController extends JeecgController<BusMarketAgreementContacts, IBusMarketAgreementContactsService> {
+	@Autowired
+	private IBusMarketAgreementContactsService busMarketAgreementContactsService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketAgreementContacts
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "协议单位-联系人-分页列表查询")
+	@ApiOperation(value="协议单位-联系人-分页列表查询", notes="协议单位-联系人-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMarketAgreementContacts>> queryPageList(BusMarketAgreementContacts busMarketAgreementContacts,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMarketAgreementContacts> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementContacts, req.getParameterMap());
+		Page<BusMarketAgreementContacts> page = new Page<BusMarketAgreementContacts>(pageNo, pageSize);
+		IPage<BusMarketAgreementContacts> pageList = busMarketAgreementContactsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 列表查询
+	  *
+	  * @param busMarketAgreementContacts
+	  * @param req
+	  * @return
+	  */
+	 //@AutoLog(value = "协议单位-联系人-列表查询")
+	 @ApiOperation(value="协议单位-联系人-列表查询", notes="协议单位-联系人-列表查询")
+	 @GetMapping(value = "/queryList")
+	 public Result<List<BusMarketAgreementContacts>> queryList(BusMarketAgreementContacts busMarketAgreementContacts, HttpServletRequest req) {
+		 QueryWrapper<BusMarketAgreementContacts> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementContacts, req.getParameterMap());
+		 LoginUser user = TokenUtils.getAuthUser();
+		 if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+			 queryWrapper.eq("tenant_id",user.getRelTenantIds());
+		 }
+		 queryWrapper.eq("del_flag",0);
+		 List<BusMarketAgreementContacts> list = busMarketAgreementContactsService.list(queryWrapper);
+		 return Result.OK(list);
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param busMarketAgreementContacts
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-联系人-添加")
+	@ApiOperation(value="协议单位-联系人-添加", notes="协议单位-联系人-添加")
+	//@RequiresPermissions("business:bus_market_agreement_contacts_info:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMarketAgreementContacts busMarketAgreementContacts) {
+		busMarketAgreementContacts.setDelFlag(CommonConstant.DEL_FLAG_0);
+		if(busMarketAgreementContacts.getTenantId() == null || busMarketAgreementContacts.getTenantId().equals("")){
+			LoginUser user = TokenUtils.getAuthUser();
+			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				busMarketAgreementContacts.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		//客户名称校验
+		LambdaQueryWrapper<BusMarketAgreementContacts> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementContacts>();
+		queryWrapper.eq(BusMarketAgreementContacts::getName,busMarketAgreementContacts.getName());
+		if (StringUtils.isNotBlank(busMarketAgreementContacts.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementContacts::getId,busMarketAgreementContacts.getId());
+		}
+		long num = busMarketAgreementContactsService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("客户名称已存在!");
+		}
+		busMarketAgreementContactsService.save(busMarketAgreementContacts);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param busMarketAgreementContacts
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-联系人-编辑")
+	@ApiOperation(value="协议单位-联系人-编辑", notes="协议单位-联系人-编辑")
+	//@RequiresPermissions("business:bus_market_agreement_contacts_info:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMarketAgreementContacts busMarketAgreementContacts) {
+//		busMarketAgreementContactsService.updateById(busMarketAgreementContacts);
+		if(busMarketAgreementContacts.getTenantId() == null || busMarketAgreementContacts.getTenantId().equals("")){
+			LoginUser user = TokenUtils.getAuthUser();
+			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				busMarketAgreementContacts.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		//客户名称校验
+		LambdaQueryWrapper<BusMarketAgreementContacts> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementContacts>();
+		queryWrapper.eq(BusMarketAgreementContacts::getName,busMarketAgreementContacts.getName());
+		if (StringUtils.isNotBlank(busMarketAgreementContacts.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementContacts::getId,busMarketAgreementContacts.getId());
+		}
+		long num = busMarketAgreementContactsService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("客户名称已存在!");
+		}
+		BusMarketAgreementContacts editModel = busMarketAgreementContactsService.getById(busMarketAgreementContacts.getId());
+		editModel.setName(busMarketAgreementContacts.getName());
+		editModel.setSex(busMarketAgreementContacts.getSex());
+		editModel.setBirthday(busMarketAgreementContacts.getBirthday());
+		editModel.setCalls(busMarketAgreementContacts.getCalls());
+		editModel.setDepartment(busMarketAgreementContacts.getDepartment());
+		editModel.setCompanyPhone(busMarketAgreementContacts.getCompanyPhone());
+		editModel.setPhone(busMarketAgreementContacts.getPhone());
+		editModel.setHomePhone(busMarketAgreementContacts.getHomePhone());
+		editModel.setPost(busMarketAgreementContacts.getPost());
+		editModel.setPostalCode(busMarketAgreementContacts.getPostalCode());
+		editModel.setEmail(busMarketAgreementContacts.getEmail());
+		editModel.setAddress(busMarketAgreementContacts.getAddress());
+		editModel.setHobby(busMarketAgreementContacts.getHobby());
+		editModel.setRemarks(busMarketAgreementContacts.getRemarks());
+		busMarketAgreementContactsService.updateById(editModel);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-联系人-通过id删除")
+	@ApiOperation(value="协议单位-联系人-通过id删除", notes="协议单位-联系人-通过id删除")
+	//@RequiresPermissions("business:bus_market_agreement_contacts_info:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMarketAgreementContactsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-联系人-批量删除")
+	@ApiOperation(value="协议单位-联系人-批量删除", notes="协议单位-联系人-批量删除")
+	//@RequiresPermissions("business:bus_market_agreement_contacts_info:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMarketAgreementContactsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "协议单位-联系人-通过id查询")
+	@ApiOperation(value="协议单位-联系人-通过id查询", notes="协议单位-联系人-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMarketAgreementContacts> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMarketAgreementContacts busMarketAgreementContacts = busMarketAgreementContactsService.getById(id);
+		if(busMarketAgreementContacts==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMarketAgreementContacts);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMarketAgreementContacts
+    */
+    //@RequiresPermissions("business:bus_market_agreement_contacts_info:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMarketAgreementContacts busMarketAgreementContacts) {
+        return super.exportXls(request, busMarketAgreementContacts, BusMarketAgreementContacts.class, "协议单位-联系人");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_market_agreement_contacts_info:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMarketAgreementContacts.class);
+    }
+
+}

+ 340 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementCustomerController.java

@@ -0,0 +1,340 @@
+package org.jeecg.modules.business.controller;
+
+import java.math.BigDecimal;
+import java.sql.Time;
+import java.util.ArrayList;
+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.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+
+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.jeecg.modules.business.entity.*;
+import org.jeecg.modules.business.enums.AgreementCommonEnum;
+import org.jeecg.modules.business.enums.CommissionTypeEnum;
+import org.jeecg.modules.business.enums.CommissionUnitEnum;
+import org.jeecg.modules.business.service.IBusMarketAgreementCustomerHousePriceService;
+import org.jeecg.modules.business.service.IBusMarketAgreementCustomerService;
+import org.jeecg.modules.business.vo.AgreementCustomerHousePriceVo;
+import org.jeecg.modules.rooms.entity.CesRoomLayout;
+import org.jeecg.modules.rooms.mapper.CesRoomLayoutMapper;
+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: 协议单位-客户协议
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="协议单位-客户协议")
+@RestController
+@RequestMapping("/business/busMarketAgreementCustomer")
+@Slf4j
+public class BusMarketAgreementCustomerController extends JeecgController<BusMarketAgreementCustomer, IBusMarketAgreementCustomerService> {
+	@Autowired
+	private IBusMarketAgreementCustomerService busMarketAgreementCustomerService;
+
+//	 @Autowired
+//	 private IBusMarketAgreementCustomerHousePriceService busMarketAgreementCustomerHousePriceService;
+//
+//	 @Resource
+//	 private CesRoomLayoutMapper cesRoomLayoutMapper;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketAgreementCustomer
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "协议单位-客户协议-分页列表查询")
+	@ApiOperation(value="协议单位-客户协议-分页列表查询", notes="协议单位-客户协议-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMarketAgreementCustomer>> queryPageList(BusMarketAgreementCustomer busMarketAgreementCustomer,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMarketAgreementCustomer> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementCustomer, req.getParameterMap());
+		Page<BusMarketAgreementCustomer> page = new Page<BusMarketAgreementCustomer>(pageNo, pageSize);
+		IPage<BusMarketAgreementCustomer> pageList = busMarketAgreementCustomerService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 列表查询
+	  *
+	  * @param busMarketAgreementCustomer
+	  * @param req
+	  * @return
+	  */
+	 //@AutoLog(value = "协议单位-客户协议-列表查询")
+	 @ApiOperation(value="协议单位-客户协议-列表查询", notes="协议单位-客户协议-列表查询")
+	 @GetMapping(value = "/queryList")
+	 public Result<List<BusMarketAgreementCustomer>> queryList(BusMarketAgreementCustomer busMarketAgreementCustomer, HttpServletRequest req) {
+		 QueryWrapper<BusMarketAgreementCustomer> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementCustomer, req.getParameterMap());
+		 LoginUser user = TokenUtils.getAuthUser();
+		 if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+			 queryWrapper.eq("tenant_id",user.getRelTenantIds());
+		 }
+		 queryWrapper.eq("del_flag",0);
+		 List<BusMarketAgreementCustomer> list = busMarketAgreementCustomerService.list(queryWrapper);
+		 return Result.OK(list);
+	 }
+	 String _tenantId = "";
+	/**
+	 *   添加
+	 *
+	 * @param busMarketAgreementCustomer
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-客户协议-添加")
+	@ApiOperation(value="协议单位-客户协议-添加", notes="协议单位-客户协议-添加")
+	//@RequiresPermissions("business:bus_market_agreement_customer_info:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMarketAgreementCustomer busMarketAgreementCustomer) {
+		busMarketAgreementCustomer.setDelFlag(CommonConstant.DEL_FLAG_0);
+		LoginUser user = TokenUtils.getAuthUser();
+		if(busMarketAgreementCustomer.getTenantId() == null || busMarketAgreementCustomer.getTenantId().equals("")){
+			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				busMarketAgreementCustomer.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		//协议单号校验
+		LambdaQueryWrapper<BusMarketAgreementCustomer> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementCustomer>();
+		queryWrapper.eq(BusMarketAgreementCustomer::getNumber,busMarketAgreementCustomer.getNumber());
+		if (StringUtils.isNotBlank(busMarketAgreementCustomer.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementCustomer::getId,busMarketAgreementCustomer.getId());
+		}
+		long num = busMarketAgreementCustomerService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("协议单号已存在!");
+		}
+		busMarketAgreementCustomer.setRoomType(CommissionTypeEnum.house.getKey());
+		busMarketAgreementCustomer.setCommission(AgreementCommonEnum.yes.getKey());
+		busMarketAgreementCustomer.setFixedDiscount(AgreementCommonEnum.yes.getKey());
+		busMarketAgreementCustomer.setDiscount(BigDecimal.valueOf(100));
+		busMarketAgreementCustomerService.saveCustomer(busMarketAgreementCustomer,user.getRelTenantIds());
+
+//		busMarketAgreementCustomerService.save(busMarketAgreementCustomer);
+//		//客户协议添加完成后,处理关联的房价信息
+//		// 获取到所有房型
+//		List<CesRoomLayout> layoutList = cesRoomLayoutMapper.selectList(new QueryWrapper<CesRoomLayout>()
+//				.eq(CesRoomLayout.HOTEL_ID, busMarketAgreementCustomer.getHotelId())
+//				.eq(CesRoomLayout.INVALID,false));
+//		List<BusMarketAgreementCustomerHousePrice> customerHousePriceList = new ArrayList<>();
+//		if (layoutList != null && layoutList.size() >0) {
+//			LoginUser user = TokenUtils.getAuthUser();
+//			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+//				_tenantId = user.getRelTenantIds();
+//			}
+//			layoutList.forEach(item -> {
+//				BusMarketAgreementCustomerHousePrice customerHousePrice = new BusMarketAgreementCustomerHousePrice();
+//				customerHousePrice.setCustomerId(busMarketAgreementCustomer.getId());
+//				customerHousePrice.setLayoutId(item.getId());
+//				customerHousePrice.setAgreementPrice(item.getMarketPrice());
+//				customerHousePrice.setAgreementDiscount(BigDecimal.valueOf(100));
+//				customerHousePrice.setAgreementDiscount(BigDecimal.valueOf(100));
+//				customerHousePrice.setBreakfastNumber(0);
+//				customerHousePrice.setMonthPrice(BigDecimal.valueOf(0));
+//				customerHousePrice.setCommissionUnit(CommissionUnitEnum.yuan.getKey());
+//				customerHousePrice.setDailyCommission(BigDecimal.valueOf(0));
+//				customerHousePrice.setDelFlag(CommonConstant.DEL_FLAG_0);
+//				customerHousePriceList.add(customerHousePrice);
+//			});
+//			busMarketAgreementCustomerHousePriceService.saveBatch(customerHousePriceList);
+//		}
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param busMarketAgreementCustomer
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-客户协议-编辑")
+	@ApiOperation(value="协议单位-客户协议-编辑", notes="协议单位-客户协议-编辑")
+	//@RequiresPermissions("business:bus_market_agreement_customer_info:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMarketAgreementCustomer busMarketAgreementCustomer) {
+//		busMarketAgreementCustomerService.updateById(busMarketAgreementCustomer);
+		LoginUser user = TokenUtils.getAuthUser();
+		if(busMarketAgreementCustomer.getTenantId() == null || busMarketAgreementCustomer.getTenantId().equals("")){
+			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				busMarketAgreementCustomer.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		//协议单号校验
+		LambdaQueryWrapper<BusMarketAgreementCustomer> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementCustomer>();
+		queryWrapper.eq(BusMarketAgreementCustomer::getNumber,busMarketAgreementCustomer.getNumber());
+		if (StringUtils.isNotBlank(busMarketAgreementCustomer.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementCustomer::getId,busMarketAgreementCustomer.getId());
+		}
+		long num = busMarketAgreementCustomerService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("协议单号已存在!");
+		}
+		BusMarketAgreementCustomer editModel = busMarketAgreementCustomerService.getById(busMarketAgreementCustomer.getId());
+		editModel.setName(busMarketAgreementCustomer.getName());
+		editModel.setType(busMarketAgreementCustomer.getType());
+		editModel.setNumber(busMarketAgreementCustomer.getNumber());
+		editModel.setSignTime(busMarketAgreementCustomer.getSignTime());
+		editModel.setEffective(busMarketAgreementCustomer.getEffective());
+		editModel.setSecrecy(busMarketAgreementCustomer.getSecrecy());
+		editModel.setCustomerSignatory(busMarketAgreementCustomer.getCustomerSignatory());
+		editModel.setCompanySignatory(busMarketAgreementCustomer.getCompanySignatory());
+		editModel.setRemarks(busMarketAgreementCustomer.getRemarks());
+		editModel.setContent(busMarketAgreementCustomer.getContent());
+		busMarketAgreementCustomerService.updateById(editModel);
+		return Result.OK("编辑成功!");
+	}
+
+	 /**
+	  *  编辑
+	  *
+	  * @param agreementCustomerHousePriceVo
+	  * @return
+	  */
+	 @AutoLog(value = "客户协议房价-编辑")
+	 @ApiOperation(value="客户协议房价-编辑", notes="客户协议房价-编辑")
+	 @RequestMapping(value = "/editHousePrice", method = {RequestMethod.PUT,RequestMethod.POST})
+	 public Result<String> editHousePrice(@RequestBody AgreementCustomerHousePriceVo agreementCustomerHousePriceVo) {
+		 LoginUser user = TokenUtils.getAuthUser();
+		 BusMarketAgreementCustomer busMarketAgreementCustomer = agreementCustomerHousePriceVo.getAgreementCustomer();
+		 if(busMarketAgreementCustomer.getTenantId() == null || busMarketAgreementCustomer.getTenantId().equals("")){
+			 if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				 busMarketAgreementCustomer.setTenantId(user.getRelTenantIds());
+			 } else {
+				 throw new JeecgBootException("当前登录人租户信息错误");
+			 }
+		 }
+		 BusMarketAgreementCustomer editModel = busMarketAgreementCustomerService.getById(busMarketAgreementCustomer.getId());
+		 editModel.setRoomType(busMarketAgreementCustomer.getRoomType());
+		 editModel.setCommissionUnit(busMarketAgreementCustomer.getCommissionUnit());
+		 editModel.setDailyCommission(busMarketAgreementCustomer.getDailyCommission());
+		 editModel.setCommission(busMarketAgreementCustomer.getCommission());
+		 editModel.setFixedDiscount(busMarketAgreementCustomer.getFixedDiscount());
+		 editModel.setDiscount(busMarketAgreementCustomer.getDiscount());
+		 //协议房价信息处理
+		 List<BusMarketAgreementCustomerHousePrice> customerHousePriceList = agreementCustomerHousePriceVo.getCustomerHousePriceList();
+		 busMarketAgreementCustomerService.editCustomer(editModel,customerHousePriceList);
+		 return Result.OK("编辑成功!");
+	 }
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-客户协议-通过id删除")
+	@ApiOperation(value="协议单位-客户协议-通过id删除", notes="协议单位-客户协议-通过id删除")
+	//@RequiresPermissions("business:bus_market_agreement_customer_info:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMarketAgreementCustomerService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-客户协议-批量删除")
+	@ApiOperation(value="协议单位-客户协议-批量删除", notes="协议单位-客户协议-批量删除")
+	//@RequiresPermissions("business:bus_market_agreement_customer_info:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMarketAgreementCustomerService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "协议单位-客户协议-通过id查询")
+	@ApiOperation(value="协议单位-客户协议-通过id查询", notes="协议单位-客户协议-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMarketAgreementCustomer> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMarketAgreementCustomer busMarketAgreementCustomer = busMarketAgreementCustomerService.getById(id);
+		if(busMarketAgreementCustomer==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMarketAgreementCustomer);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMarketAgreementCustomer
+    */
+    //@RequiresPermissions("business:bus_market_agreement_customer_info:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMarketAgreementCustomer busMarketAgreementCustomer) {
+        return super.exportXls(request, busMarketAgreementCustomer, BusMarketAgreementCustomer.class, "协议单位-客户协议");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_market_agreement_customer_info:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMarketAgreementCustomer.class);
+    }
+
+}

+ 191 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementCustomerHousePriceController.java

@@ -0,0 +1,191 @@
+package org.jeecg.modules.business.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.annotation.Resource;
+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 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.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+import org.jeecg.modules.business.service.IBusMarketAgreementCustomerHousePriceService;
+import org.jeecg.modules.rooms.entity.CesRoomLayout;
+import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
+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: 客户协议-房价管理
+ * @Author: jeecg-boot
+ * @Date:   2023-04-12
+ * @Version: V1.0
+ */
+@Api(tags="客户协议-房价管理")
+@RestController
+@RequestMapping("/business/busMarketAgreementCustomerHousePrice")
+@Slf4j
+public class BusMarketAgreementCustomerHousePriceController extends JeecgController<BusMarketAgreementCustomerHousePrice, IBusMarketAgreementCustomerHousePriceService> {
+	@Autowired
+	private IBusMarketAgreementCustomerHousePriceService busMarketAgreementCustomerHousePriceService;
+
+	 @Resource
+	 private CesRoomLayoutServiceImpl cesRoomLayoutService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketAgreementCustomerHousePrice
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "客户协议-房价管理-分页列表查询")
+	@ApiOperation(value="客户协议-房价管理-分页列表查询", notes="客户协议-房价管理-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMarketAgreementCustomerHousePrice>> queryPageList(BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMarketAgreementCustomerHousePrice> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementCustomerHousePrice, req.getParameterMap());
+		Page<BusMarketAgreementCustomerHousePrice> page = new Page<BusMarketAgreementCustomerHousePrice>(pageNo, pageSize);
+		IPage<BusMarketAgreementCustomerHousePrice> pageList = busMarketAgreementCustomerHousePriceService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item->{
+			CesRoomLayout layout = cesRoomLayoutService.getById(item.getLayoutId());
+			if (layout != null) {
+				item.setLayoutName(layout.getName());
+				item.setLayoutPrice(layout.getMarketPrice());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param busMarketAgreementCustomerHousePrice
+	 * @return
+	 */
+	@AutoLog(value = "客户协议-房价管理-添加")
+	@ApiOperation(value="客户协议-房价管理-添加", notes="客户协议-房价管理-添加")
+	//@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice) {
+		busMarketAgreementCustomerHousePriceService.save(busMarketAgreementCustomerHousePrice);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param busMarketAgreementCustomerHousePrice
+	 * @return
+	 */
+	@AutoLog(value = "客户协议-房价管理-编辑")
+	@ApiOperation(value="客户协议-房价管理-编辑", notes="客户协议-房价管理-编辑")
+	//@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice) {
+		busMarketAgreementCustomerHousePriceService.updateById(busMarketAgreementCustomerHousePrice);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "客户协议-房价管理-通过id删除")
+	@ApiOperation(value="客户协议-房价管理-通过id删除", notes="客户协议-房价管理-通过id删除")
+	//@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMarketAgreementCustomerHousePriceService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "客户协议-房价管理-批量删除")
+	@ApiOperation(value="客户协议-房价管理-批量删除", notes="客户协议-房价管理-批量删除")
+	//@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMarketAgreementCustomerHousePriceService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "客户协议-房价管理-通过id查询")
+	@ApiOperation(value="客户协议-房价管理-通过id查询", notes="客户协议-房价管理-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMarketAgreementCustomerHousePrice> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice = busMarketAgreementCustomerHousePriceService.getById(id);
+		if(busMarketAgreementCustomerHousePrice==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMarketAgreementCustomerHousePrice);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMarketAgreementCustomerHousePrice
+    */
+    //@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice) {
+        return super.exportXls(request, busMarketAgreementCustomerHousePrice, BusMarketAgreementCustomerHousePrice.class, "客户协议-房价管理");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_market_agreement_customer_house_price_info:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMarketAgreementCustomerHousePrice.class);
+    }
+
+}

+ 138 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketAgreementUnitController.java

@@ -1,10 +1,14 @@
 package org.jeecg.modules.business.controller;
 package org.jeecg.modules.business.controller;
 
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.exception.JeecgBootException;
@@ -17,12 +21,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 
 
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto;
 import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.entity.*;
+import org.jeecg.modules.business.enums.AgreementCommonEnum;
 import org.jeecg.modules.business.enums.AgreenmentAccountStatus;
 import org.jeecg.modules.business.enums.AgreenmentAccountStatus;
 import org.jeecg.modules.business.enums.AgreenmentCheckStatus;
 import org.jeecg.modules.business.enums.AgreenmentCheckStatus;
-import org.jeecg.modules.business.service.IBusMarketAgreementUnitService;
-import org.jeecg.modules.business.service.IBusHotelService;
+import org.jeecg.modules.business.service.*;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
@@ -46,6 +53,19 @@ public class BusMarketAgreementUnitController extends JeecgController<BusMarketA
 
 
 	 @Autowired
 	 @Autowired
 	 private IBusHotelService busHotelService;
 	 private IBusHotelService busHotelService;
+
+	@Autowired
+	private IBusMarketAgreementCheckInRecordService busMarketAgreementCheckInRecordService;
+
+	@Autowired
+	private IBusMarketAgreementCustomerService busMarketAgreementCustomerService;
+
+	@Autowired
+	private IBusMarketAgreementCustomerHousePriceService busMarketAgreementCustomerHousePriceService;
+
+	@Resource
+	private CesRoomLayoutServiceImpl cesRoomLayoutService;
+
 	/**
 	/**
 	 * 分页列表查询
 	 * 分页列表查询
 	 *
 	 *
@@ -64,6 +84,13 @@ public class BusMarketAgreementUnitController extends JeecgController<BusMarketA
 															   HttpServletRequest req) {
 															   HttpServletRequest req) {
 		QueryWrapper<BusMarketAgreementUnit> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementUnit, req.getParameterMap());
 		QueryWrapper<BusMarketAgreementUnit> queryWrapper = QueryGenerator.initQueryWrapper(busMarketAgreementUnit, req.getParameterMap());
 		Page<BusMarketAgreementUnit> page = new Page<BusMarketAgreementUnit>(pageNo, pageSize);
 		Page<BusMarketAgreementUnit> page = new Page<BusMarketAgreementUnit>(pageNo, pageSize);
+		String keyWord = req.getParameter("keyWord");
+		if(oConvertUtils.isNotEmpty(keyWord)){
+			queryWrapper.and(i -> i.like("customer_name",keyWord)
+					.or().like("customer_no",keyWord)
+					.or().like("contacts_name",keyWord)
+					.or().like("phone",keyWord));
+		}
 		IPage<BusMarketAgreementUnit> pageList = busAgreementUnitService.page(page, queryWrapper);
 		IPage<BusMarketAgreementUnit> pageList = busAgreementUnitService.page(page, queryWrapper);
 		pageList.getRecords().forEach(item->{
 		pageList.getRecords().forEach(item->{
 			BusHotel hotle = busHotelService.getById(item.getHotelId());
 			BusHotel hotle = busHotelService.getById(item.getHotelId());
@@ -74,6 +101,61 @@ public class BusMarketAgreementUnitController extends JeecgController<BusMarketA
 		return Result.OK(pageList);
 		return Result.OK(pageList);
 	}
 	}
 
 
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketAgreementCheckInRecordDto
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "协议单位-入住记录-分页列表查询")
+	@ApiOperation(value="协议单位-入住记录-分页列表查询", notes="协议单位-入住记录-分页列表查询")
+	@GetMapping(value = "/listCheckInRecord")
+	public Result<IPage<BusMarketAgreementCheckInRecordDto>> queryPageCheckInRecordList(BusMarketAgreementCheckInRecordDto busMarketAgreementCheckInRecordDto,
+																						@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																						@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																						HttpServletRequest req) {
+		Page<BusMarketAgreementCheckInRecordDto> page = new Page<BusMarketAgreementCheckInRecordDto>(pageNo, pageSize);
+		String startDate = busMarketAgreementCheckInRecordDto.getStartDate() + " 00:00:00";
+		String endDate = busMarketAgreementCheckInRecordDto.getEndDate() + " 23:59:59";
+		IPage<BusMarketAgreementCheckInRecordDto> pageList = busMarketAgreementCheckInRecordService
+				.getCheckInRecord(page,busMarketAgreementCheckInRecordDto.getAgreementId(), startDate, endDate, busMarketAgreementCheckInRecordDto.getRoomNumber(), busMarketAgreementCheckInRecordDto.getCustomerName());
+
+		pageList.getRecords().forEach(item->{
+			//当前客户有选择具体客户协议,则房价根据客户协议处理
+			if (item.getAgreementCustomerId() != null && !item.getAgreementCustomerId().equals("")){
+				BigDecimal realPrice = getRealPrice(item);
+				item.setHousePrice(realPrice);
+				item.setTotalPrice(realPrice);
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	public BigDecimal getRealPrice(BusMarketAgreementCheckInRecordDto item){
+		long realPrice = 0;
+		BusMarketAgreementCustomer busMarketAgreementCustomer = busMarketAgreementCustomerService.getById(item.getAgreementCustomerId());
+		if (busMarketAgreementCustomer != null ){
+			//使用固定折扣,则房价=门市价*固定折扣
+			if (busMarketAgreementCustomer.getFixedDiscount() == AgreementCommonEnum.yes.getKey()){
+				realPrice = Math.round(item.getHousePrice().doubleValue() * (busMarketAgreementCustomer.getDiscount().doubleValue()/100));
+			}else{
+				//获取到协议房价表
+				QueryWrapper<BusMarketAgreementCustomerHousePrice> queryWrapper = new QueryWrapper<BusMarketAgreementCustomerHousePrice>();
+				queryWrapper.eq("customer_id",item.getAgreementCustomerId());
+				queryWrapper.eq("layout_id",item.getLayoutId());
+				BusMarketAgreementCustomerHousePrice busMarketAgreementCustomerHousePrice = busMarketAgreementCustomerHousePriceService.getOne(queryWrapper);
+				if(busMarketAgreementCustomerHousePrice != null && busMarketAgreementCustomerHousePrice.getDiscount() !=null){
+					realPrice = Math.round(item.getHousePrice().doubleValue() * (busMarketAgreementCustomerHousePrice.getDiscount().doubleValue()/100));
+				}
+			}
+		}
+		return  BigDecimal.valueOf(realPrice);
+	}
+
 	/**
 	/**
 	 *   添加
 	 *   添加
 	 *
 	 *
@@ -125,6 +207,18 @@ public class BusMarketAgreementUnitController extends JeecgController<BusMarketA
 				throw new JeecgBootException("当前登录人租户信息错误");
 				throw new JeecgBootException("当前登录人租户信息错误");
 			}
 			}
 		}
 		}
+		//客户编号校验
+		LambdaQueryWrapper<BusMarketAgreementUnit> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementUnit>();
+		queryWrapper.eq(BusMarketAgreementUnit::getCustomerNo,busMarketAgreementUnit.getCustomerNo());
+		if (StringUtils.isNotBlank(busMarketAgreementUnit.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementUnit::getId,busMarketAgreementUnit.getId());
+		}
+		long num = busAgreementUnitService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("客户编号已存在!");
+		}
 		BusMarketAgreementUnit editModel = busAgreementUnitService.getById(busMarketAgreementUnit.getId());
 		BusMarketAgreementUnit editModel = busAgreementUnitService.getById(busMarketAgreementUnit.getId());
 		editModel.setCustomerName(busMarketAgreementUnit.getCustomerName());
 		editModel.setCustomerName(busMarketAgreementUnit.getCustomerName());
 		editModel.setCustomerShortName(busMarketAgreementUnit.getCustomerShortName());
 		editModel.setCustomerShortName(busMarketAgreementUnit.getCustomerShortName());
@@ -149,6 +243,48 @@ public class BusMarketAgreementUnitController extends JeecgController<BusMarketA
 	}
 	}
 
 
 	/**
 	/**
+	 *  编辑
+	 *
+	 * @param busMarketAgreementUnit
+	 * @return
+	 */
+	@AutoLog(value = "协议单位-编辑")
+	@ApiOperation(value="协议单位-编辑", notes="协议单位-编辑")
+	//@RequiresPermissions("business:bus_agreement_unit_info:edit")
+	@RequestMapping(value = "/editOther", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> editOther(@RequestBody BusMarketAgreementUnit busMarketAgreementUnit) {
+//		busAgreementUnitService.updateById(busAgreementUnit);
+		if(busMarketAgreementUnit.getTenantId() == null || busMarketAgreementUnit.getTenantId().equals("")){
+			LoginUser user = TokenUtils.getAuthUser();
+			if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+				busMarketAgreementUnit.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		//客户编号校验
+		LambdaQueryWrapper<BusMarketAgreementUnit> queryWrapper = new LambdaQueryWrapper<BusMarketAgreementUnit>();
+		queryWrapper.eq(BusMarketAgreementUnit::getCustomerNo,busMarketAgreementUnit.getCustomerNo());
+		if (StringUtils.isNotBlank(busMarketAgreementUnit.getId())) {
+			// 编辑页面校验
+			queryWrapper.ne(BusMarketAgreementUnit::getId,busMarketAgreementUnit.getId());
+		}
+		long num = busAgreementUnitService.count(queryWrapper);
+		if (num != 0) {
+			// 该值不可用
+			return Result.error("客户编号已存在!");
+		}
+		BusMarketAgreementUnit editModel = busAgreementUnitService.getById(busMarketAgreementUnit.getId());
+		editModel.setBookkeeping(busMarketAgreementUnit.getBookkeeping());
+		editModel.setRemarks(busMarketAgreementUnit.getRemarks());
+		editModel.setReception(busMarketAgreementUnit.getReception());
+		editModel.setCommission(busMarketAgreementUnit.getCommission());
+		editModel.setBookkStatus(busMarketAgreementUnit.getBookkStatus());
+		busAgreementUnitService.updateById(editModel);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
 	 *   通过id删除
 	 *   通过id删除
 	 *
 	 *
 	 * @param id
 	 * @param id

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusOrderSoundController.java

@@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
 
 
 import org.jeecg.modules.business.entity.BusAdvert;
 import org.jeecg.modules.business.entity.BusAdvert;
 import org.jeecg.modules.business.entity.BusOrderSound;
 import org.jeecg.modules.business.entity.BusOrderSound;
+import org.jeecg.modules.business.entity.BusSalesPerson;
 import org.jeecg.modules.business.service.IBusOrderSoundService;
 import org.jeecg.modules.business.service.IBusOrderSoundService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
@@ -78,6 +79,27 @@ public class BusOrderSoundController extends JeecgController<BusOrderSound, IBus
 		return Result.OK(pageList);
 		return Result.OK(pageList);
 	}
 	}
 
 
+	 /**
+	  * 列表查询
+	  *
+	  * @param busOrderSound
+	  * @param req
+	  * @return
+	  */
+	 //@AutoLog(value = "订单铃声-列表查询")
+	 @ApiOperation(value="订单铃声-列表查询", notes="订单铃声-列表查询")
+	 @GetMapping(value = "/queryList")
+	 public Result<List<BusOrderSound>> queryList(BusOrderSound busOrderSound, HttpServletRequest req) {
+		 QueryWrapper<BusOrderSound> queryWrapper = QueryGenerator.initQueryWrapper(busOrderSound, req.getParameterMap());
+		 LoginUser user = TokenUtils.getAuthUser();
+		 if(user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")){
+			 queryWrapper.eq("tenant_id",user.getRelTenantIds());
+		 }
+		 queryWrapper.eq("del_flag",0);
+		 List<BusOrderSound> list = busOrderSoundService.list(queryWrapper);
+		 return Result.OK(list);
+	 }
+
 	/**
 	/**
 	 *   添加
 	 *   添加
 	 *
 	 *

+ 70 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMarketAgreementCheckInRecordDto.java

@@ -0,0 +1,70 @@
+package org.jeecg.modules.business.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+/*
+ * 协议入住记录
+ * */
+public class BusMarketAgreementCheckInRecordDto {
+    @Excel(name = "单号", width = 15)
+    @ApiModelProperty(value = "单号")
+    private String orderNumber;
+
+    @Excel(name = "房间号", width = 15)
+    @ApiModelProperty(value = "房间号")
+    private String roomNumber;
+
+    @Excel(name = "房价", width = 15)
+    @ApiModelProperty(value = "房价")
+    private BigDecimal housePrice;
+
+    /**入住时间*/
+    @Excel(name = "入住时间", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "入住时间")
+    private Date arrivalTime;
+
+    /**预离时间*/
+    @Excel(name = "预离时间", width = 15, format = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "预离时间")
+    private Date dueOutTime;
+
+    /**入住天数*/
+    @Excel(name = "入住天数", width = 15)
+    @ApiModelProperty(value = "入住天数")
+    private Integer dayCount;
+
+    @Excel(name = "入住类型", width = 15)
+    @ApiModelProperty(value = "入住类型")
+    private Integer checkinType;
+
+    @Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+
+    @Excel(name = "客人姓名", width = 15)
+    @ApiModelProperty(value = "客人姓名")
+    private String customerName;
+
+    @Excel(name = "总消费", width = 15)
+    @ApiModelProperty(value = "总消费")
+    private BigDecimal totalPrice;
+
+    private String agreementId;
+    private String startDate;
+    private String endDate;
+
+    private String agreementCustomerId;
+    private String layoutId;
+}

+ 131 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementContacts.java

@@ -0,0 +1,131 @@
+package org.jeecg.modules.business.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: 协议单位-联系人
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_market_agreement_contacts_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_market_agreement_contacts_info对象", description="协议单位-联系人")
+public class BusMarketAgreementContacts implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 agreementId;
+	/**姓名*/
+	@Excel(name = "姓名", width = 15)
+    @ApiModelProperty(value = "姓名")
+    private String name;
+	/**性别(0-默认未知,1-男,2-女)*/
+    @Excel(name = "性别(0-默认未知,1-男,2-女)", width = 15,dicCode="sex")
+    @ApiModelProperty(value = "性别(0-默认未知,1-男,2-女)")
+    @Dict(dicCode = "sex")
+    private Integer sex;
+	/**生日*/
+	@Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "生日")
+    private Date birthday;
+    /**称呼(1-先生,2-女士)*/
+    @Excel(name = "称呼(1-先生,2-女士)", width = 15,dicCode="calls")
+    @ApiModelProperty(value = "称呼(1-先生,2-女士)")
+    private Integer calls;
+	/**部门*/
+	@Excel(name = "部门", width = 15)
+    @ApiModelProperty(value = "部门")
+    private String department;
+	/**公司电话*/
+	@Excel(name = "公司电话", width = 15)
+    @ApiModelProperty(value = "公司电话")
+    private String companyPhone;
+	/**手机号*/
+	@Excel(name = "手机号", width = 15)
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+	/**家庭电话*/
+	@Excel(name = "家庭电话", width = 15)
+    @ApiModelProperty(value = "家庭电话")
+    private String homePhone;
+	/**职务*/
+	@Excel(name = "职务", width = 15)
+    @ApiModelProperty(value = "职务")
+    private String post;
+	/**邮编*/
+	@Excel(name = "邮编", width = 15)
+    @ApiModelProperty(value = "邮编")
+    private String postalCode;
+	/**电子邮件*/
+	@Excel(name = "电子邮件", width = 15)
+    @ApiModelProperty(value = "电子邮件")
+    private String email;
+	/**地址*/
+	@Excel(name = "地址", width = 15)
+    @ApiModelProperty(value = "地址")
+    private String address;
+	/**爱好*/
+	@Excel(name = "爱好", width = 15)
+    @ApiModelProperty(value = "爱好")
+    private String hobby;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 143 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementCustomer.java

@@ -0,0 +1,143 @@
+package org.jeecg.modules.business.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: 协议单位-客户协议
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_market_agreement_customer_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_market_agreement_customer_info对象", description="协议单位-客户协议")
+public class BusMarketAgreementCustomer implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联协议*/
+	@Excel(name = "关联协议", width = 15)
+    @ApiModelProperty(value = "关联协议")
+    private String agreementId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**协议主题*/
+	@Excel(name = "协议主题", width = 15)
+    @ApiModelProperty(value = "协议主题")
+    private String name;
+	/**协议类型*/
+	@Excel(name = "协议类型", width = 15)
+    @Dict(dictTable = "bus_dict_item_info", dicCode = "id", dicText = "item_text")
+    @ApiModelProperty(value = "协议类型")
+    private String type;
+	/**协议单号*/
+	@Excel(name = "协议单号", width = 15)
+    @ApiModelProperty(value = "协议单号")
+    private String number;
+	/**签约时间*/
+	@Excel(name = "签约时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "签约时间")
+    private Date signTime;
+	/**有效期*/
+	@Excel(name = "有效期", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "有效期")
+    private Date effective;
+	/**佣金信息保密*/
+	@Excel(name = "佣金信息保密", width = 15)
+    @ApiModelProperty(value = "佣金信息保密")
+    private Integer secrecy;
+	/**客户签约人*/
+	@Excel(name = "客户签约人", width = 15)
+    @ApiModelProperty(value = "客户签约人")
+    private String customerSignatory;
+	/**本司签约人*/
+	@Excel(name = "本司签约人", width = 15)
+    @ApiModelProperty(value = "本司签约人")
+    private String companySignatory;
+	/**内容*/
+	@Excel(name = "内容", width = 15)
+    @ApiModelProperty(value = "内容")
+    private String content;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+    /**记佣类型(0-固定记佣;1-房类记佣)*/
+    @Excel(name = "记佣类型(0-固定记佣;1-房类记佣)", width = 15)
+    @ApiModelProperty(value = "记佣类型(0-固定记佣;1-房类记佣)")
+    private java.lang.Integer roomType;
+    /**佣金单位(0-元;1-%)*/
+    @Excel(name = "佣金单位(0-元;1-%)", width = 15)
+    @ApiModelProperty(value = "佣金单位(0-元;1-%)")
+    private java.lang.Integer commissionUnit;
+    /**每日佣金*/
+    @Excel(name = "每日佣金", width = 15)
+    @ApiModelProperty(value = "每日佣金")
+    private java.math.BigDecimal dailyCommission;
+    /**每日记佣(0-否;1-是)*/
+    @Excel(name = "每日记佣(0-否;1-是)", width = 15)
+    @ApiModelProperty(value = "每日记佣(0-否;1-是)")
+    private java.lang.Integer commission;
+    /**使用固定房价折扣(0-否;1-是)*/
+    @Excel(name = "使用固定房价折扣(0-否;1-是)", width = 15)
+    @ApiModelProperty(value = "使用固定房价折扣(0-否;1-是)")
+    private java.lang.Integer fixedDiscount;
+    /**房价固定折扣*/
+    @Excel(name = "房价固定折扣", width = 15)
+    @ApiModelProperty(value = "房价固定折扣")
+    private java.math.BigDecimal discount;
+
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+}

+ 107 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementCustomerHousePrice.java

@@ -0,0 +1,107 @@
+package org.jeecg.modules.business.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: 客户协议-房价管理
+ * @Author: jeecg-boot
+ * @Date:   2023-04-12
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_market_agreement_customer_house_price_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_market_agreement_customer_house_price_info对象", description="客户协议-房价管理")
+public class BusMarketAgreementCustomerHousePrice implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 customerId;
+	/**关联房型*/
+	@Excel(name = "关联房型", width = 15)
+    @ApiModelProperty(value = "关联房型")
+    private String layoutId;
+	/**协议房价*/
+	@Excel(name = "协议房价", width = 15)
+    @ApiModelProperty(value = "协议房价")
+    private BigDecimal agreementPrice;
+	/**协议折扣*/
+	@Excel(name = "协议折扣", width = 15)
+    @ApiModelProperty(value = "协议折扣")
+    private BigDecimal agreementDiscount;
+	/**房价折扣*/
+	@Excel(name = "房价折扣", width = 15)
+    @ApiModelProperty(value = "房价折扣")
+    private BigDecimal discount;
+	/**早餐数量*/
+	@Excel(name = "早餐数量", width = 15)
+    @ApiModelProperty(value = "早餐数量")
+    private Integer breakfastNumber;
+	/**月长包房价*/
+	@Excel(name = "月长包房价", width = 15)
+    @ApiModelProperty(value = "月长包房价")
+    private BigDecimal monthPrice;
+	/**佣金单位(0-元;1-%)*/
+	@Excel(name = "佣金单位(0-元;1-%)", width = 15)
+    @ApiModelProperty(value = "佣金单位(0-元;1-%)")
+    private Integer commissionUnit;
+	/**日佣金*/
+	@Excel(name = "日佣金", width = 15)
+    @ApiModelProperty(value = "日佣金")
+    private BigDecimal dailyCommission;
+	/**删除状态(0-正常,1-已删除)*/
+	@Excel(name = "删除状态(0-正常,1-已删除)", width = 15)
+    @ApiModelProperty(value = "删除状态(0-正常,1-已删除)")
+    @TableLogic
+    private Integer delFlag;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    private transient String layoutName;
+    private transient BigDecimal layoutPrice;
+}

+ 10 - 7
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketAgreementUnit.java

@@ -124,6 +124,7 @@ public class BusMarketAgreementUnit implements Serializable {
 	/**客户行业*/
 	/**客户行业*/
 	@Excel(name = "客户行业", width = 15)
 	@Excel(name = "客户行业", width = 15)
     @ApiModelProperty(value = "客户行业")
     @ApiModelProperty(value = "客户行业")
+    @Dict(dictTable = "bus_dict_item_info", dicCode = "id", dicText = "item_text")
     private String customerIndustry;
     private String customerIndustry;
 	/**审核状态*/
 	/**审核状态*/
 	@Excel(name = "审核状态", width = 15)
 	@Excel(name = "审核状态", width = 15)
@@ -169,18 +170,20 @@ public class BusMarketAgreementUnit implements Serializable {
 	@Excel(name = "不允许该单位记账", width = 15)
 	@Excel(name = "不允许该单位记账", width = 15)
     @ApiModelProperty(value = "不允许该单位记账")
     @ApiModelProperty(value = "不允许该单位记账")
     private Integer bookkStatus;
     private Integer bookkStatus;
-	/**前台是否查询*/
-	@Excel(name = "前台是否查询", width = 15)
-    @ApiModelProperty(value = "前台是否查询")
-    private Integer commission;
-	/**是否返佣*/
-	@Excel(name = "是否返佣", width = 15)
+
+    /**是否返佣*/
+    @Excel(name = "是否返佣", width = 15)
     @ApiModelProperty(value = "是否返佣")
     @ApiModelProperty(value = "是否返佣")
+    private Integer commission;
+
+    /**前台是否查询*/
+    @Excel(name = "前台是否查询", width = 15)
+    @ApiModelProperty(value = "前台是否查询")
     private Integer reception;
     private Integer reception;
 	/**备注*/
 	/**备注*/
 	@Excel(name = "备注", width = 15)
 	@Excel(name = "备注", width = 15)
     @ApiModelProperty(value = "备注")
     @ApiModelProperty(value = "备注")
-    private String remark;
+    private String remarks;
 	/**删除状态*/
 	/**删除状态*/
 	@Excel(name = "删除状态", width = 15)
 	@Excel(name = "删除状态", width = 15)
     @ApiModelProperty(value = "删除状态")
     @ApiModelProperty(value = "删除状态")

+ 53 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/AgreementCommonEnum.java

@@ -0,0 +1,53 @@
+package org.jeecg.modules.business.enums;
+
+import org.jeecg.common.system.vo.DictModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum AgreementCommonEnum {
+    no(0, "否"),
+    yes(1, "是"),
+    ;
+
+    Integer key;
+
+    String title;
+
+    AgreementCommonEnum(Integer key, String title){
+        this.key = key;
+        this.title = title;
+    }
+    public Integer getKey() {
+        return key;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 获取字典数据
+     * @return
+     */
+    public static List<DictModel> getDictList(){
+        List<DictModel> list = new ArrayList<>();
+        DictModel dictModel = null;
+        for(AgreementCommonEnum e: AgreementCommonEnum.values()){
+            dictModel = new DictModel();
+            dictModel.setValue(e.key.toString());
+            dictModel.setText(e.title);
+            list.add(dictModel);
+        }
+        return list;
+    }
+
+    public static AgreementCommonEnum val(Integer key){
+        for(AgreementCommonEnum bld: values()){
+            if(bld.key == key){
+                return bld;
+            }
+        }
+        return null;
+    }
+}

+ 52 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/CommissionTypeEnum.java

@@ -0,0 +1,52 @@
+package org.jeecg.modules.business.enums;
+
+import org.jeecg.common.system.vo.DictModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum CommissionTypeEnum {
+    house(1, "房类记佣"),
+    fix(0, "固定记佣"),;
+
+    Integer key;
+
+    String title;
+
+    CommissionTypeEnum(Integer key, String title){
+        this.key = key;
+        this.title = title;
+    }
+    public Integer getKey() {
+        return key;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 获取字典数据
+     * @return
+     */
+    public static List<DictModel> getDictList(){
+        List<DictModel> list = new ArrayList<>();
+        DictModel dictModel = null;
+        for(CommissionTypeEnum e: CommissionTypeEnum.values()){
+            dictModel = new DictModel();
+            dictModel.setValue(e.key.toString());
+            dictModel.setText(e.title);
+            list.add(dictModel);
+        }
+        return list;
+    }
+
+    public static CommissionTypeEnum val(Integer key){
+        for(CommissionTypeEnum bld: values()){
+            if(bld.key == key){
+                return bld;
+            }
+        }
+        return null;
+    }
+}

+ 52 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/enums/CommissionUnitEnum.java

@@ -0,0 +1,52 @@
+package org.jeecg.modules.business.enums;
+
+import org.jeecg.common.system.vo.DictModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum CommissionUnitEnum {
+    percentage(1, "%"),
+    yuan(0, "元"),;
+
+    Integer key;
+
+    String title;
+
+    CommissionUnitEnum(Integer key, String title){
+        this.key = key;
+        this.title = title;
+    }
+    public Integer getKey() {
+        return key;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 获取字典数据
+     * @return
+     */
+    public static List<DictModel> getDictList(){
+        List<DictModel> list = new ArrayList<>();
+        DictModel dictModel = null;
+        for(CommissionUnitEnum e: CommissionUnitEnum.values()){
+            dictModel = new DictModel();
+            dictModel.setValue(e.key.toString());
+            dictModel.setText(e.title);
+            list.add(dictModel);
+        }
+        return list;
+    }
+
+    public static CommissionUnitEnum val(Integer key){
+        for(CommissionUnitEnum bld: values()){
+            if(bld.key == key){
+                return bld;
+            }
+        }
+        return null;
+    }
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementCheckInRecordMapper.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto;
+
+import java.util.List;
+
+public interface BusMarketAgreementCheckInRecordMapper extends BaseMapper<BusMarketAgreementCheckInRecordDto> {
+
+    List<BusMarketAgreementCheckInRecordDto> getCheckInRecord(Page<BusMarketAgreementCheckInRecordDto> page, String agreementid,
+                                                              @Param("startdate") String startdate,
+                                                              @Param("enddate") String enddate,
+                                                              @Param("roomnumber") String roomnumber,
+                                                              @Param("customername") String customername);
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.entity.BusMarketAgreementContacts;
+
+/**
+ * @Description: 协议单位-联系人
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface BusMarketAgreementContactsMapper extends BaseMapper<BusMarketAgreementContacts> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+
+/**
+ * @Description: 客户协议-房价管理
+ * @Author: jeecg-boot
+ * @Date:   2023-04-12
+ * @Version: V1.0
+ */
+public interface BusMarketAgreementCustomerHousePriceMapper extends BaseMapper<BusMarketAgreementCustomerHousePrice> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomer;
+
+/**
+ * @Description: 协议单位-客户协议
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface BusMarketAgreementCustomerMapper extends BaseMapper<BusMarketAgreementCustomer> {
+
+}

+ 3 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketAgreementUnitMapper.java

@@ -1,8 +1,11 @@
 package org.jeecg.modules.business.mapper;
 package org.jeecg.modules.business.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.lettuce.core.dynamic.annotation.Param;
 import org.jeecg.modules.business.entity.BusMarketAgreementUnit;
 import org.jeecg.modules.business.entity.BusMarketAgreementUnit;
 
 
+import java.util.List;
+
 /**
 /**
  * @Description: 协议单位
  * @Description: 协议单位
  * @Author: jeecg-boot
  * @Author: jeecg-boot

+ 2 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketCouponsCashUsedMapper.java

@@ -27,11 +27,11 @@ public interface BusMarketCouponsCashUsedMapper extends BaseMapper<BusMarketCoup
      * @param mobile 手机号
      * @param mobile 手机号
      * @return
      * @return
      */
      */
-    @Select("<script>select coupons_cash.name as couponsName,coupons_cash.cost from bus_market_coupons_cash_used coupons_cash_used " +
+    @Select("<script>select coupons_cash_used.id,coupons_cash.name as couponsName,coupons_cash.cost from bus_market_coupons_cash_used coupons_cash_used " +
             "inner join bus_market_coupons_cash_info coupons_cash\n" +
             "inner join bus_market_coupons_cash_info coupons_cash\n" +
             "on coupons_cash.id=coupons_cash_used.coupons_id\n" +
             "on coupons_cash.id=coupons_cash_used.coupons_id\n" +
             "where coupons_cash_used.status=1\n" +
             "where coupons_cash_used.status=1\n" +
-            "<if test='mobile != null and mobile !=\"\"'> and coupons_cash_used.mobile = #{mobile} </if>"+
+            "<if test='mobile != null and mobile !=\"\"'> and coupons_cash_used.userId = #{mobile} </if>"+
             "<if test='hotelId != null and hotelId !=\"\"'> and coupons_cash_used.hotel_id = #{hotelId} </if>"+
             "<if test='hotelId != null and hotelId !=\"\"'> and coupons_cash_used.hotel_id = #{hotelId} </if>"+
             "<if test='conditions >0'> and (coupons_cash.type=1 or (coupons_cash.type=2 and coupons_cash.conditions>=#{conditions}))</if>"+
             "<if test='conditions >0'> and (coupons_cash.type=1 or (coupons_cash.type=2 and coupons_cash.conditions>=#{conditions}))</if>"+
             "</script>")
             "</script>")

+ 77 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCheckInRecordMapper.xml

@@ -0,0 +1,77 @@
+<?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.business.mapper.BusMarketAgreementCheckInRecordMapper">
+<!--	<resultMap id="BusMarketAgreementCheckInRecord" type="org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecord" >-->
+<!--		<result column="id" property="id" jdbcType="VARCHAR"/>-->
+<!--		<result column="titile" property="titile" jdbcType="VARCHAR"/>-->
+<!--		<result column="msg_content" property="msgContent" jdbcType="VARCHAR"/>-->
+<!--		<result column="start_time" property="startTime" jdbcType="TIMESTAMP"/>-->
+<!--		<result column="end_time" property="endTime" jdbcType="TIMESTAMP"/>-->
+<!--		<result column="sender" property="sender" jdbcType="VARCHAR"/>-->
+<!--		<result column="priority" property="priority" jdbcType="VARCHAR"/>-->
+<!--		<result column="msg_category" property="msgCategory" jdbcType="VARCHAR"/>-->
+<!--		<result column="msg_type" property="msgType" jdbcType="VARCHAR"/>-->
+<!--		<result column="send_status" property="sendStatus" jdbcType="VARCHAR"/>-->
+<!--		<result column="send_time" property="sendTime" jdbcType="VARCHAR"/>-->
+<!--		<result column="cancel_time" property="cancelTime" jdbcType="VARCHAR"/>-->
+<!--		<result column="del_flag" property="delFlag" jdbcType="VARCHAR"/>-->
+<!--		<result column="create_by" property="createBy" jdbcType="VARCHAR"/>-->
+<!--		<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>-->
+<!--		<result column="update_by" property="updateBy" jdbcType="VARCHAR"/>-->
+<!--		<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>-->
+<!--		<result column="user_ids" property="userIds" jdbcType="VARCHAR"/>-->
+<!--	</resultMap>-->
+
+
+<!--	<select id="querySysCementListByUserId" parameterType="String"  resultMap="BusMarketAgreementCheckInRecord">-->
+<!--	   select sa.* from sys_announcement sa,sys_announcement_send sas-->
+<!--	   where sa.id = sas.annt_id-->
+<!--	   and sa.send_status = '1'-->
+<!--	   and sa.del_flag = '0'-->
+<!--	   and sas.user_id = #{userId}-->
+<!--	   and sa.msg_category = #{msgCategory}-->
+<!--	   and sas.read_flag = '0'-->
+<!--	</select>-->
+
+	<!-- 获取入住记录 -->
+	<select id="getCheckInRecord" resultType="org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto">
+		SELECT
+			l.living_order_no AS order_number,-- 单号
+			CONCAT(r.prefix,r.`name`) AS room_number,-- 房间号
+			rl.market_price AS house_price,-- 房价
+			l.arrival_time AS arrival_time,-- 入住时间
+			l.due_out_time AS due_out_time,-- 离店时间
+			l.day_count AS day_count,-- 入住天数
+			--(CASE WHEN bo.booking_type = 1 THEN '全天房' ELSE '钟点房' END ) AS checkin_type,-- 入住类型
+			bo.booking_type AS checkin_type,-- 入住类型
+			0 AS status,-- 状态
+			lc.customer_name AS customer_name, -- 客人名称
+			0 AS total_price, -- 总消费
+			IFNULL(l.contract_team_protocol_id,'') AS agreement_customer_id, -- 客户协议编号
+			IFNULL(r.layout_id,'') AS layout_id -- 房型编号
+		FROM bus_market_agreement_unit_info a
+			LEFT JOIN bus_rooms_living_order l ON a.id = l.contract_team_id AND l.customer_type = 3
+			LEFT JOIN bus_room_booking_orders bo ON l.booking_order_id = bo.id
+			LEFT JOIN bus_market_agreement_customer_info ac ON l.contract_team_protocol_id = ac.id
+			LEFT JOIN bus_booking_rooms b ON l.booking_room_id = b.id
+			LEFT JOIN ces_rooms r ON b.room_id = r.id
+			LEFT JOIN ces_room_layout rl ON r.layout_id = rl.id
+			LEFT JOIN bus_living_customer lc ON l.id = lc.living_order_id
+		WHERE 1 = 1
+			AND a.del_flag = 0
+			AND r.invalid = 0
+			AND a.id = #{agreementid}
+			<if test="roomnumber!=null and roomnumber!=''">
+				<bind name="bindroomnumber" value="'%'+roomnumber+'%'"/>
+				AND CONCAT(r.prefix,r.`name`) LIKE #{bindroomnumber}
+			</if>
+			<if test="customername!=null and customername!=''">
+				<bind name="bindcustomername" value="'%'+customername+'%'"/>
+				AND lc.customer_name LIKE #{bindcustomername}
+			</if>
+			<if test="startdate!=null and startdate!='' and enddate!=null and enddate!=''">
+				AND l.arrival_time BETWEEN #{startdate} AND #{enddate}
+			</if>
+		ORDER BY l.create_time DESC
+	</select>
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementContactsMapper.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.demo.business.mapper.BusMarketAgreementContactsMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCustomerHousePriceMapper.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.demo.business.mapper.BusMarketAgreementCustomerHousePriceMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementCustomerMapper.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.demo.business.mapper.BusMarketAgreementCustomerMapper">
+
+</mapper>

+ 29 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketAgreementUnitMapper.xml

@@ -5,4 +5,33 @@
     <select id="queryMaxAccount" resultType="String">
     <select id="queryMaxAccount" resultType="String">
 		SELECT IFNULL(MAX(account_no),'A0000') FROM bus_market_agreement_unit_info
 		SELECT IFNULL(MAX(account_no),'A0000') FROM bus_market_agreement_unit_info
 	</select>
 	</select>
+
+    <!-- 获取入住记录 -->
+    <select id="getCheckInRecord" resultType="org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto">
+		SELECT
+			l.living_order_no AS order_number,-- 单号
+			(r.prefix+r.`name`) AS room_number,-- 房间号
+			rl.market_price AS house_price,-- 房价
+			l.arrival_time AS arrival_time,-- 入住时间
+			l.due_out_time AS due_out_time,-- 离店时间
+			l.day_count AS day_count,-- 入住天数
+			--(CASE WHEN bo.booking_type = 1 THEN '全天房' ELSE '钟点房' END ) AS checkin_type,-- 入住类型
+			bo.booking_type AS checkin_type,-- 入住类型
+			0 AS status,-- 状态
+			lc.customer_name AS customer_name, -- 客人名称
+			0 AS total_price -- 总消费
+		FROM bus_market_agreement_unit_info a
+			LEFT JOIN bus_rooms_living_order l ON a.id = l.contract_team_id AND l.customer_type = 3
+			LEFT JOIN bus_room_booking_orders bo ON l.booking_order_id = bo.id
+			LEFT JOIN bus_market_agreement_customer_info ac ON l.contract_team_protocol_id = ac.id
+			LEFT JOIN bus_booking_rooms b ON l.booking_room_id = b.id
+			LEFT JOIN ces_rooms r ON b.room_id = r.id
+			LEFT JOIN ces_room_layout rl ON r.layout_id = rl.id
+			LEFT JOIN bus_living_customer lc ON l.id = lc.living_order_id
+		WHERE 1 = 1
+			AND a.del_flag = 0
+			AND r.invalid = 0
+		ORDER BY id DESC
+		LIMIT #{offset}, #{pagesize}
+	</select>
 </mapper>
 </mapper>

+ 0 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusHotelService.java

@@ -3,7 +3,6 @@ package org.jeecg.modules.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.business.entity.BusHotel;
 import org.jeecg.modules.business.entity.BusHotel;
-import org.jeecg.modules.system.entity.SysUser;
 
 
 /**
 /**
  * @Description: bus_hotel
  * @Description: bus_hotel

+ 12 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementCheckInRecordService.java

@@ -0,0 +1,12 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto;
+import org.jeecg.common.api.vo.Result;
+
+public interface IBusMarketAgreementCheckInRecordService extends IService<BusMarketAgreementCheckInRecordDto> {
+
+    public Page<BusMarketAgreementCheckInRecordDto> getCheckInRecord(Page<BusMarketAgreementCheckInRecordDto> page,
+                                                                     String agreementid,String startdate, String enddate, String roomnumber, String customername);
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.business.entity.BusMarketAgreementContacts;
+
+/**
+ * @Description: 协议单位-联系人
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface IBusMarketAgreementContactsService extends IService<BusMarketAgreementContacts> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+
+/**
+ * @Description: 客户协议-房价管理
+ * @Author: jeecg-boot
+ * @Date:   2023-04-12
+ * @Version: V1.0
+ */
+public interface IBusMarketAgreementCustomerHousePriceService extends IService<BusMarketAgreementCustomerHousePrice> {
+
+}

+ 28 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementCustomerService.java

@@ -0,0 +1,28 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomer;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+import org.jeecg.modules.system.entity.SysUser;
+
+import java.util.List;
+
+/**
+ * @Description: 协议单位-客户协议
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface IBusMarketAgreementCustomerService extends IService<BusMarketAgreementCustomer> {
+    /**
+     * 保存客户协议
+     * @param agreementCustomer 客户协议
+     */
+    void saveCustomer(BusMarketAgreementCustomer agreementCustomer,String tenantId);
+
+    /**
+     * 编辑客户协议
+     * @param agreementCustomer 客户协议
+     */
+    void editCustomer(BusMarketAgreementCustomer agreementCustomer, List<BusMarketAgreementCustomerHousePrice> customerHousePriceList);
+}

+ 4 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketAgreementUnitService.java

@@ -1,8 +1,11 @@
 package org.jeecg.modules.business.service;
 package org.jeecg.modules.business.service;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.business.entity.BusMarketAgreementUnit;
 import org.jeecg.modules.business.entity.BusMarketAgreementUnit;
 
 
+import java.util.List;
+
 /**
 /**
  * @Description: 协议单位
  * @Description: 协议单位
  * @Author: jeecg-boot
  * @Author: jeecg-boot
@@ -11,7 +14,7 @@ import org.jeecg.modules.business.entity.BusMarketAgreementUnit;
  */
  */
 public interface IBusMarketAgreementUnitService extends IService<BusMarketAgreementUnit> {
 public interface IBusMarketAgreementUnitService extends IService<BusMarketAgreementUnit> {
     /**
     /**
-     * 添加数据日志
+     * 获取最大账号
      */
      */
     public String getMaxAccount();
     public String getMaxAccount();
 
 

+ 28 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementCheckInRecordServiceImpl.java

@@ -0,0 +1,28 @@
+package org.jeecg.modules.business.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.business.dto.BusMarketAgreementCheckInRecordDto;
+import org.jeecg.modules.business.mapper.BusMarketAgreementCheckInRecordMapper;
+import org.jeecg.modules.business.service.IBusMarketAgreementCheckInRecordService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+@Slf4j
+public class BusMarketAgreementCheckInRecordServiceImpl extends ServiceImpl<BusMarketAgreementCheckInRecordMapper
+        , BusMarketAgreementCheckInRecordDto> implements IBusMarketAgreementCheckInRecordService {
+    @Resource
+    private BusMarketAgreementCheckInRecordMapper busMarketAgreementCheckInRecordMapper;
+
+    @Override
+    public Page<BusMarketAgreementCheckInRecordDto> getCheckInRecord(Page<BusMarketAgreementCheckInRecordDto> page, String agreementid, String startdate, String enddate, String roomnumber, String customername) {
+        if (page.getSize() == -1) {
+            return page.setRecords(busMarketAgreementCheckInRecordMapper.getCheckInRecord(null,agreementid, startdate, enddate,roomnumber,customername));
+        } else {
+            return page.setRecords(busMarketAgreementCheckInRecordMapper.getCheckInRecord(page,agreementid, startdate, enddate,roomnumber,customername));
+        }
+    }
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.business.service.impl;
+
+import org.jeecg.modules.business.entity.BusMarketAgreementContacts;
+import org.jeecg.modules.business.mapper.BusMarketAgreementContactsMapper;
+import org.jeecg.modules.business.service.IBusMarketAgreementContactsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 协议单位-联系人
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Service
+public class BusMarketAgreementContactsServiceImpl extends ServiceImpl<BusMarketAgreementContactsMapper, BusMarketAgreementContacts> implements IBusMarketAgreementContactsService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.business.service.impl;
+
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+import org.jeecg.modules.business.mapper.BusMarketAgreementCustomerHousePriceMapper;
+import org.jeecg.modules.business.service.IBusMarketAgreementCustomerHousePriceService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 客户协议-房价管理
+ * @Author: jeecg-boot
+ * @Date:   2023-04-12
+ * @Version: V1.0
+ */
+@Service
+public class BusMarketAgreementCustomerHousePriceServiceImpl extends ServiceImpl<BusMarketAgreementCustomerHousePriceMapper, BusMarketAgreementCustomerHousePrice> implements IBusMarketAgreementCustomerHousePriceService {
+
+}

+ 96 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketAgreementCustomerServiceImpl.java

@@ -0,0 +1,96 @@
+package org.jeecg.modules.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomer;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+import org.jeecg.modules.business.enums.CommissionUnitEnum;
+import org.jeecg.modules.business.mapper.BusMarketAgreementCustomerHousePriceMapper;
+import org.jeecg.modules.business.mapper.BusMarketAgreementCustomerMapper;
+import org.jeecg.modules.business.service.IBusMarketAgreementCustomerService;
+import org.jeecg.modules.rooms.entity.CesRoomLayout;
+import org.jeecg.modules.rooms.mapper.CesRoomLayoutMapper;
+import org.jeecg.modules.system.entity.*;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 协议单位-客户协议
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Service
+public class BusMarketAgreementCustomerServiceImpl extends ServiceImpl<BusMarketAgreementCustomerMapper, BusMarketAgreementCustomer> implements IBusMarketAgreementCustomerService {
+    @Resource
+    private CesRoomLayoutMapper cesRoomLayoutMapper;
+
+    @Resource
+    private BusMarketAgreementCustomerHousePriceMapper agreementCustomerHousePriceMapper;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveCustomer(BusMarketAgreementCustomer agreementCustomer,String tenantId) {
+        //step.1 保存客户协议
+        this.save(agreementCustomer);
+        //step.2 处理协议关联房价信息
+        // 获取到所有房型
+        List<CesRoomLayout> layoutList = cesRoomLayoutMapper.selectList(new QueryWrapper<CesRoomLayout>()
+                .eq(CesRoomLayout.HOTEL_ID, agreementCustomer.getHotelId())
+                .eq(CesRoomLayout.INVALID,false));
+        List<BusMarketAgreementCustomerHousePrice> customerHousePriceList = new ArrayList<>();
+        if (layoutList != null && layoutList.size() >0) {
+            layoutList.forEach(item -> {
+                BusMarketAgreementCustomerHousePrice customerHousePrice = new BusMarketAgreementCustomerHousePrice();
+                customerHousePrice.setTenantId(tenantId);
+                customerHousePrice.setHotelId(agreementCustomer.getHotelId());
+                customerHousePrice.setCustomerId(agreementCustomer.getId());
+                customerHousePrice.setLayoutId(item.getId());
+                customerHousePrice.setAgreementPrice(item.getMarketPrice());
+                customerHousePrice.setAgreementDiscount(BigDecimal.valueOf(100));
+                customerHousePrice.setDiscount(BigDecimal.valueOf(100));
+                customerHousePrice.setBreakfastNumber(0);
+                customerHousePrice.setMonthPrice(BigDecimal.valueOf(0));
+                customerHousePrice.setCommissionUnit(CommissionUnitEnum.yuan.getKey());
+                customerHousePrice.setDailyCommission(BigDecimal.valueOf(0));
+                customerHousePrice.setDelFlag(CommonConstant.DEL_FLAG_0);
+                customerHousePriceList.add(customerHousePrice);
+                agreementCustomerHousePriceMapper.insert(customerHousePrice);
+            });
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void editCustomer(BusMarketAgreementCustomer agreementCustomer,List<BusMarketAgreementCustomerHousePrice> customerHousePriceList) {
+        //step.1 修改客户协议基础信息
+        this.updateById(agreementCustomer);
+
+        //step.2 修改关联协议房价信息
+        if (customerHousePriceList != null && customerHousePriceList.size() > 0){
+            customerHousePriceList.forEach(item->{
+                agreementCustomerHousePriceMapper.updateById(item);
+            });
+        }
+//        //查询已关联房价信息
+//        List<BusMarketAgreementCustomerHousePrice> customerHousePriceList = agreementCustomerHousePriceMapper
+//                .selectList(new QueryWrapper<BusMarketAgreementCustomerHousePrice>()
+//                        .lambda().eq(BusMarketAgreementCustomerHousePrice::getCustomerId, agreementCustomer.getId()));
+//        if(customerHousePriceList != null && customerHousePriceList.size()>0){
+//            for(BusMarketAgreementCustomerHousePrice housePrice : customerHousePriceList ){
+//            }
+//        }
+    }
+}

+ 3 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMarketAgreementUnitServiceImpl.java

@@ -8,6 +8,8 @@ import org.springframework.stereotype.Service;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 
+import java.util.List;
+
 /**
 /**
  * @Description: 协议单位
  * @Description: 协议单位
  * @Author: jeecg-boot
  * @Author: jeecg-boot
@@ -26,4 +28,5 @@ public class BusMarketMarketAgreementUnitServiceImpl extends ServiceImpl<BusMark
         String maxAccount = busMarketAgreementUnitMapper.queryMaxAccount();
         String maxAccount = busMarketAgreementUnitMapper.queryMaxAccount();
         return  maxAccount;
         return  maxAccount;
     }
     }
+
 }
 }

+ 5 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java

@@ -876,6 +876,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
         if(room==null) throw new JeecgBootException("房间不存在");
         if(room==null) throw new JeecgBootException("房间不存在");
         room.setLivingOrderId(livingOrder.getId());
         room.setLivingOrderId(livingOrder.getId());
         room.setRoomStatus(RoomStatusEnum.LIVE_CLEAR.getKey());
         room.setRoomStatus(RoomStatusEnum.LIVE_CLEAR.getKey());
+        room.setLastRoomStatus(RoomStatusEnum.LIVE_CLEAR.getKey());
         roomsService.updateById(room);
         roomsService.updateById(room);
         bkRoom.setRoomStatus(RoomStatusEnum.LIVE_DIRTY.getKey());
         bkRoom.setRoomStatus(RoomStatusEnum.LIVE_DIRTY.getKey());
         bookingRoomsService.updateById(bkRoom);
         bookingRoomsService.updateById(bkRoom);
@@ -1079,6 +1080,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
                 if(baseRooms.size() > 0) {
                 if(baseRooms.size() > 0) {
                     baseRooms.forEach(s->{
                     baseRooms.forEach(s->{
                         s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
                         s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
+                        s.setLastRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
                         s.setLivingOrderId("");
                         s.setLivingOrderId("");
                     });
                     });
                     roomsService.updateBatchById(baseRooms);
                     roomsService.updateBatchById(baseRooms);
@@ -1120,6 +1122,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
         if(baseRooms.size() > 0) {
         if(baseRooms.size() > 0) {
             baseRooms.forEach(s->{
             baseRooms.forEach(s->{
                 s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
                 s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
+                s.setLastRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
                 s.setLivingOrderId("");
                 s.setLivingOrderId("");
             });
             });
             roomsService.updateBatchById(baseRooms);
             roomsService.updateBatchById(baseRooms);
@@ -1178,6 +1181,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
             rooms.forEach(s->{
             rooms.forEach(s->{
                 s.setLivingOrderId("");
                 s.setLivingOrderId("");
                 s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
                 s.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
+                s.setLastRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
             });
             });
             bookingLivings.forEach(s->s.setSettleType(SettleTypeEnum.SETTLE_LEAVE.getKey()));
             bookingLivings.forEach(s->s.setSettleType(SettleTypeEnum.SETTLE_LEAVE.getKey()));
             roomsLivingOrderService.updateBatchById(bookingLivings);
             roomsLivingOrderService.updateBatchById(bookingLivings);
@@ -1192,7 +1196,7 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
             if(room == null) throw new JeecgBootException("未找到订单信息");
             if(room == null) throw new JeecgBootException("未找到订单信息");
             room.setLivingOrderId("");
             room.setLivingOrderId("");
             room.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
             room.setRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
-
+            room.setLastRoomStatus(RoomStatusEnum.EMPTY_DIRTY.getKey());
             livingOrder.setSettleType(SettleTypeEnum.SETTLE_LEAVE.getKey());
             livingOrder.setSettleType(SettleTypeEnum.SETTLE_LEAVE.getKey());
             roomsLivingOrderService.updateById(livingOrder);
             roomsLivingOrderService.updateById(livingOrder);
             roomsService.updateById(room);
             roomsService.updateById(room);

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/AgreementCustomerHousePriceVo.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusBookingBatch;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomer;
+import org.jeecg.modules.business.entity.BusMarketAgreementCustomerHousePrice;
+
+import java.util.List;
+
+@Data
+public class AgreementCustomerHousePriceVo {
+    @ApiModelProperty(value = "客户协议")
+    private BusMarketAgreementCustomer agreementCustomer;
+
+    @ApiModelProperty(value = "客户协议房价列表")
+    private List<BusMarketAgreementCustomerHousePrice> customerHousePriceList;
+}

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

@@ -0,0 +1,203 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.Arrays;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TokenUtils;
+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.service.IFwRoomCleanService;
+
+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.jeecg.modules.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.entity.CesRooms;
+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.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+/**
+ * @Description: fw_room_clean
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_clean")
+@RestController
+@RequestMapping("/fw/fwRoomClean")
+@Slf4j
+public class FwRoomCleanController extends JeecgController<FwRoomClean, IFwRoomCleanService> {
+	@Autowired
+	private IFwRoomCleanService fwRoomCleanService;
+	 @Autowired
+	 private CesRoomsServiceImpl cesRoomsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomClean
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_clean-分页列表查询")
+	@ApiOperation(value="fw_room_clean-分页列表查询", notes="fw_room_clean-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomClean>> queryPageList(FwRoomClean fwRoomClean,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomClean> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomClean, req.getParameterMap());
+		Page<FwRoomClean> page = new Page<FwRoomClean>(pageNo, pageSize);
+		IPage<FwRoomClean> pageList = fwRoomCleanService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean-添加")
+	@ApiOperation(value="fw_room_clean-添加", notes="fw_room_clean-添加")
+	//@RequiresPermissions("fw:fw_room_clean:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody RoomCleanDto dto) {
+		if (ObjectUtils.isEmpty(dto.getRoomCleanList())) {
+			return Result.error("请先选择房间");
+		}
+		for (FwRoomClean fwRoomClean : dto.getRoomCleanList()) {
+			CesRooms cesRooms = cesRoomsService.getById(fwRoomClean.getRoomId());
+			if (ObjectUtils.isEmpty(cesRooms)) {
+				return Result.error("房间不存在");
+			}
+			if (!cesRooms.getRoomStatus().equals(RoomStatusEnum.EMPTY_DIRTY.getKey()) && !cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_DIRTY.getKey())) {
+				return Result.error("房间不是脏房状态不可以置干净");
+			}
+			fwRoomClean.setHotelId(dto.getHotelId());
+			fwRoomClean.setTenantId(TokenUtils.currentTenantId());
+			fwRoomClean.setRemark(dto.getRemark());
+			fwRoomClean.setWaiterId(dto.getWaiterId());
+		}
+		Boolean res = fwRoomCleanService.saveBatch(dto.getRoomCleanList());
+		if (res) {
+			for (FwRoomClean fwRoomClean : dto.getRoomCleanList()) {
+				CesRooms cesRooms = cesRoomsService.getById(fwRoomClean.getRoomId());
+				if (ObjectUtils.isNotEmpty(cesRooms)) {
+					if (cesRooms.getRoomStatus().equals(RoomStatusEnum.EMPTY_DIRTY.getKey())) {
+						cesRooms.setLastRoomStatus(RoomStatusEnum.EMPTY_CLEAR.getKey());
+						cesRooms.setRoomStatus(RoomStatusEnum.EMPTY_CLEAR.getKey());
+					} else if (cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_DIRTY.getKey())) {
+						cesRooms.setLastRoomStatus(RoomStatusEnum.LIVE_CLEAR.getKey());
+						cesRooms.setRoomStatus(RoomStatusEnum.LIVE_CLEAR.getKey());
+					}
+					cesRoomsService.updateById(cesRooms);
+				}
+			}
+		}
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomClean
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean-编辑")
+	@ApiOperation(value="fw_room_clean-编辑", notes="fw_room_clean-编辑")
+	//@RequiresPermissions("fw:fw_room_clean:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomClean fwRoomClean) {
+		fwRoomCleanService.updateById(fwRoomClean);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean-通过id删除")
+	@ApiOperation(value="fw_room_clean-通过id删除", notes="fw_room_clean-通过id删除")
+	//@RequiresPermissions("fw:fw_room_clean:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomCleanService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_clean-批量删除")
+	@ApiOperation(value="fw_room_clean-批量删除", notes="fw_room_clean-批量删除")
+	//@RequiresPermissions("fw:fw_room_clean:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomCleanService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_clean-通过id查询")
+	@ApiOperation(value="fw_room_clean-通过id查询", notes="fw_room_clean-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomClean> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomClean fwRoomClean = fwRoomCleanService.getById(id);
+		if(fwRoomClean==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomClean);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomClean
+    */
+    //@RequiresPermissions("fw:fw_room_clean:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomClean fwRoomClean) {
+        return super.exportXls(request, fwRoomClean, FwRoomClean.class, "fw_room_clean");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_clean:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomClean.class);
+    }
+
+}

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

@@ -0,0 +1,229 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.modules.fw.dto.RoomLockDto;
+import org.jeecg.modules.fw.entity.FwRoomLock;
+import org.jeecg.modules.fw.service.IFwRoomLockService;
+
+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.jeecg.modules.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.entity.CesRooms;
+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.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+/**
+ * @Description: fw_room_lock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_lock")
+@RestController
+@RequestMapping("/fw/fwRoomLock")
+@Slf4j
+public class FwRoomLockController extends JeecgController<FwRoomLock, IFwRoomLockService> {
+	@Autowired
+	private IFwRoomLockService fwRoomLockService;
+	@Autowired
+	private CesRoomsServiceImpl cesRoomsService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomLock
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_lock-分页列表查询")
+	@ApiOperation(value="fw_room_lock-分页列表查询", notes="fw_room_lock-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomLock>> queryPageList(FwRoomLock fwRoomLock,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomLock> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomLock, req.getParameterMap());
+		Page<FwRoomLock> page = new Page<FwRoomLock>(pageNo, pageSize);
+		IPage<FwRoomLock> pageList = fwRoomLockService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_lock-添加")
+	@ApiOperation(value="fw_room_lock-添加", notes="fw_room_lock-添加")
+	//@RequiresPermissions("fw:fw_room_lock:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody RoomLockDto dto) {
+		if (ObjectUtils.isEmpty(dto.getRoomLockList())) {
+			return Result.error("请先选择房间");
+		}
+		for (FwRoomLock fwRoomLock : dto.getRoomLockList()) {
+			CesRooms cesRooms = cesRoomsService.getById(fwRoomLock.getRoomId());
+			if (ObjectUtils.isEmpty(cesRooms)) {
+				return Result.error("房间不存在");
+			}
+			if (cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_CLEAR.getKey()) || cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_DIRTY.getKey())) {
+				return Result.error("房间在住状态不可以锁房");
+			}
+			fwRoomLock.setHotelId(dto.getHotelId());
+			fwRoomLock.setTenantId(TokenUtils.currentTenantId());
+			fwRoomLock.setRemark(dto.getRemark());
+		}
+		Boolean res = fwRoomLockService.saveBatch(dto.getRoomLockList());
+		if (res) {
+			for (FwRoomLock fwRoomLock : dto.getRoomLockList()) {
+//				LambdaUpdateWrapper<CesRooms> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+//				lambdaUpdateWrapper.eq(CesRooms::getId, fwRoomLock.getRoomId());
+//				lambdaUpdateWrapper.set(CesRooms::getRoomStatus, RoomStatusEnum.ON_LOCK.getKey());
+//				cesRoomsService.update(lambdaUpdateWrapper);
+				CesRooms cesRooms = cesRoomsService.getById(fwRoomLock.getRoomId());
+				if (ObjectUtils.isNotEmpty(cesRooms)) {
+					cesRooms.setLastRoomStatus(cesRooms.getRoomStatus());
+					cesRooms.setRoomStatus(RoomStatusEnum.ON_LOCK.getKey());
+					cesRoomsService.updateById(cesRooms);
+				}
+			}
+		}
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  *  房间解锁
+	  *
+	  * @param roomIds
+	  * @return
+	  */
+	 @AutoLog(value = "fw_room_lock-房间解锁")
+	 @ApiOperation(value="fw_room_lock-房间解锁", notes="fw_room_lock-房间解锁")
+	 @PostMapping(value = "/offLockRoom")
+	 public Result<String> offLockRoom(@RequestParam(name="roomIds",required=true) String roomIds) {
+		 LambdaQueryWrapper<FwRoomLock> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 lambdaQueryWrapper.in(FwRoomLock::getRoomId, Arrays.asList(roomIds.split(",")));
+		 this.fwRoomLockService.remove(lambdaQueryWrapper);
+
+		 List<String> list = Arrays.asList(roomIds.split(","));
+		 for (String s : list) {
+			 CesRooms cesRooms = cesRoomsService.getById(s);
+			 if (ObjectUtils.isNotEmpty(cesRooms)) {
+				 if (cesRooms.getRoomStatus().equals(RoomStatusEnum.ON_LOCK.getKey())) {
+					 cesRooms.setRoomStatus(cesRooms.getLastRoomStatus());
+					 cesRoomsService.updateById(cesRooms);
+				 }
+			 }
+		 }
+		 return Result.OK("房间解锁成功!");
+	 }
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomLock
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_lock-编辑")
+	@ApiOperation(value="fw_room_lock-编辑", notes="fw_room_lock-编辑")
+	//@RequiresPermissions("fw:fw_room_lock:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomLock fwRoomLock) {
+		fwRoomLockService.updateById(fwRoomLock);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_lock-通过id删除")
+	@ApiOperation(value="fw_room_lock-通过id删除", notes="fw_room_lock-通过id删除")
+	//@RequiresPermissions("fw:fw_room_lock:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomLockService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_lock-批量删除")
+	@ApiOperation(value="fw_room_lock-批量删除", notes="fw_room_lock-批量删除")
+	//@RequiresPermissions("fw:fw_room_lock:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomLockService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_lock-通过id查询")
+	@ApiOperation(value="fw_room_lock-通过id查询", notes="fw_room_lock-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomLock> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomLock fwRoomLock = fwRoomLockService.getById(id);
+		if(fwRoomLock==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomLock);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomLock
+    */
+    //@RequiresPermissions("fw:fw_room_lock:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomLock fwRoomLock) {
+        return super.exportXls(request, fwRoomLock, FwRoomLock.class, "fw_room_lock");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_lock:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomLock.class);
+    }
+
+}

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

@@ -0,0 +1,230 @@
+package org.jeecg.modules.fw.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.modules.fw.dto.RoomRepairDto;
+import org.jeecg.modules.fw.entity.FwRoomRepair;
+import org.jeecg.modules.fw.service.IFwRoomRepairService;
+
+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.jeecg.modules.rooms.Enum.RoomStatusEnum;
+import org.jeecg.modules.rooms.entity.CesRooms;
+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.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+
+/**
+ * @Description: fw_room_repair
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Api(tags="fw_room_repair")
+@RestController
+@RequestMapping("/fw/fwRoomRepair")
+@Slf4j
+public class FwRoomRepairController extends JeecgController<FwRoomRepair, IFwRoomRepairService> {
+	@Autowired
+	private IFwRoomRepairService fwRoomRepairService;
+	 @Autowired
+	 private CesRoomsServiceImpl cesRoomsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param fwRoomRepair
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_repair-分页列表查询")
+	@ApiOperation(value="fw_room_repair-分页列表查询", notes="fw_room_repair-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<FwRoomRepair>> queryPageList(FwRoomRepair fwRoomRepair,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<FwRoomRepair> queryWrapper = QueryGenerator.initQueryWrapper(fwRoomRepair, req.getParameterMap());
+		Page<FwRoomRepair> page = new Page<FwRoomRepair>(pageNo, pageSize);
+		IPage<FwRoomRepair> pageList = fwRoomRepairService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_repair-添加")
+	@ApiOperation(value="fw_room_repair-添加", notes="fw_room_repair-添加")
+	//@RequiresPermissions("fw:fw_room_repair:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody RoomRepairDto dto) {
+		if (ObjectUtils.isEmpty(dto.getRoomRepairList())) {
+			return Result.error("请先选择房间");
+		}
+		for (FwRoomRepair fwRoomRepair : dto.getRoomRepairList()) {
+			CesRooms cesRooms = cesRoomsService.getById(fwRoomRepair.getRoomId());
+			if (ObjectUtils.isEmpty(cesRooms)) {
+				return Result.error("房间不存在");
+			}
+			if (cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_CLEAR.getKey()) || cesRooms.getRoomStatus().equals(RoomStatusEnum.LIVE_DIRTY.getKey())) {
+				return Result.error("房间在住状态不可以维修");
+			}
+			fwRoomRepair.setHotelId(dto.getHotelId());
+			fwRoomRepair.setTenantId(TokenUtils.currentTenantId());
+			fwRoomRepair.setRemark(dto.getRemark());
+			fwRoomRepair.setStartDate(dto.getStartDate());
+			fwRoomRepair.setEndDate(dto.getEndDate());
+		}
+		Boolean res = fwRoomRepairService.saveBatch(dto.getRoomRepairList());
+		if (res) {
+			for (FwRoomRepair fwRoomRepair : dto.getRoomRepairList()) {
+//				LambdaUpdateWrapper<CesRooms> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+//				lambdaUpdateWrapper.eq(CesRooms::getId, fwRoomRepair.getRoomId());
+//				lambdaUpdateWrapper.set(CesRooms::getRoomStatus, RoomStatusEnum.IN_SERVICE.getKey());
+//				cesRoomsService.update(lambdaUpdateWrapper);
+				CesRooms cesRooms = cesRoomsService.getById(fwRoomRepair.getRoomId());
+				if (ObjectUtils.isNotEmpty(cesRooms)) {
+					cesRooms.setLastRoomStatus(cesRooms.getRoomStatus());
+					cesRooms.setRoomStatus(RoomStatusEnum.IN_SERVICE.getKey());
+					cesRoomsService.updateById(cesRooms);
+				}
+			}
+		}
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  * 房间完成维修
+	  * @param roomIds
+	  * @return
+	  */
+	 @AutoLog(value = "fw_room_lock-房间完成维修")
+	 @ApiOperation(value="fw_room_lock-房间完成维修", notes="fw_room_lock-房间完成维修")
+	 @PostMapping(value = "/completeRepairRoom")
+	 public Result<String> completeRepairRoom(@RequestParam(name="roomIds",required=true) String roomIds) {
+		 LambdaUpdateWrapper<FwRoomRepair> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+		 lambdaUpdateWrapper.in(FwRoomRepair::getRoomId, Arrays.asList(roomIds.split(",")));
+		 lambdaUpdateWrapper.set(FwRoomRepair::getStatus,2);
+		 this.fwRoomRepairService.update(lambdaUpdateWrapper);
+
+		 List<String> list = Arrays.asList(roomIds.split(","));
+		 for (String s : list) {
+			 CesRooms cesRooms = cesRoomsService.getById(s);
+			 if (ObjectUtils.isNotEmpty(cesRooms)) {
+				 if (cesRooms.getRoomStatus().equals(RoomStatusEnum.IN_SERVICE.getKey())) {
+					 cesRooms.setRoomStatus(cesRooms.getLastRoomStatus());
+					 cesRoomsService.updateById(cesRooms);
+				 }
+			 }
+		 }
+		 return Result.OK("房间完成维修成功!");
+	 }
+
+	/**
+	 *  编辑
+	 *
+	 * @param fwRoomRepair
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_repair-编辑")
+	@ApiOperation(value="fw_room_repair-编辑", notes="fw_room_repair-编辑")
+	//@RequiresPermissions("fw:fw_room_repair:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody FwRoomRepair fwRoomRepair) {
+		fwRoomRepairService.updateById(fwRoomRepair);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_repair-通过id删除")
+	@ApiOperation(value="fw_room_repair-通过id删除", notes="fw_room_repair-通过id删除")
+	//@RequiresPermissions("fw:fw_room_repair:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		fwRoomRepairService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "fw_room_repair-批量删除")
+	@ApiOperation(value="fw_room_repair-批量删除", notes="fw_room_repair-批量删除")
+	//@RequiresPermissions("fw:fw_room_repair:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.fwRoomRepairService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "fw_room_repair-通过id查询")
+	@ApiOperation(value="fw_room_repair-通过id查询", notes="fw_room_repair-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<FwRoomRepair> queryById(@RequestParam(name="id",required=true) String id) {
+		FwRoomRepair fwRoomRepair = fwRoomRepairService.getById(id);
+		if(fwRoomRepair==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(fwRoomRepair);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param fwRoomRepair
+    */
+    //@RequiresPermissions("fw:fw_room_repair:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, FwRoomRepair fwRoomRepair) {
+        return super.exportXls(request, fwRoomRepair, FwRoomRepair.class, "fw_room_repair");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("fw:fw_room_repair:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, FwRoomRepair.class);
+    }
+
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomCleanDto.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.fw.dto;
+
+import lombok.Data;
+import org.jeecg.modules.fw.entity.FwRoomClean;
+import org.jeecg.modules.fw.entity.FwRoomLock;
+
+import java.util.List;
+
+@Data
+public class RoomCleanDto {
+    private List<FwRoomClean> roomCleanList;
+    private String hotelId;
+    private String remark;
+    private String waiterId;
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomLockDto.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.fw.dto;
+
+import lombok.Data;
+import org.jeecg.modules.fw.entity.FwRoomLock;
+import org.jeecg.modules.pos.entity.PosOrderGoodsPayment;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class RoomLockDto {
+    private List<FwRoomLock> roomLockList;
+    private String hotelId;
+    private String remark;
+}

+ 25 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/dto/RoomRepairDto.java

@@ -0,0 +1,25 @@
+package org.jeecg.modules.fw.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.fw.entity.FwRoomLock;
+import org.jeecg.modules.fw.entity.FwRoomRepair;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RoomRepairDto {
+    private List<FwRoomRepair> roomRepairList;
+    private String hotelId;
+    private String remark;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date startDate;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date endDate;
+}

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

@@ -0,0 +1,67 @@
+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_clean
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_clean")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_clean对象", description="fw_room_clean")
+public class FwRoomClean 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 roomId;
+	/**房号*/
+	@Excel(name = "房号", width = 15)
+    @ApiModelProperty(value = "房号")
+    private String roomNo;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+	/**服务员id*/
+	@Excel(name = "服务员id", width = 15)
+    @ApiModelProperty(value = "服务员id")
+    private String waiterId;
+	/**打扫状态 0未打扫 1已打扫*/
+	@Excel(name = "打扫状态 0未打扫 1已打扫", width = 15)
+    @ApiModelProperty(value = "打扫状态 0未打扫 1已打扫")
+    private Integer state;
+}

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

@@ -0,0 +1,59 @@
+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_lock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_lock")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_lock对象", description="fw_room_lock")
+public class FwRoomLock 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 roomId;
+	/**房号*/
+	@Excel(name = "房号", width = 15)
+    @ApiModelProperty(value = "房号")
+    private String roomNo;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+}

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

@@ -0,0 +1,75 @@
+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_repair
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("fw_room_repair")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="fw_room_repair对象", description="fw_room_repair")
+public class FwRoomRepair 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 roomId;
+	/**房号*/
+	@Excel(name = "房号", width = 15)
+    @ApiModelProperty(value = "房号")
+    private String roomNo;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+	/**维修开始时间*/
+	@Excel(name = "维修开始时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "维修开始时间")
+    private Date startDate;
+	/**维修结束时间*/
+	@Excel(name = "维修结束时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "维修结束时间")
+    private Date endDate;
+	/**状态 1正在进行 2已完成维修*/
+	@Excel(name = "状态 1正在进行 2已完成维修", width = 15)
+    @ApiModelProperty(value = "状态 1正在进行 2已完成维修")
+    private Integer status;
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomCleanMapper.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.FwRoomClean;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_clean
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface FwRoomCleanMapper extends BaseMapper<FwRoomClean> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomLockMapper.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.FwRoomLock;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_lock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface FwRoomLockMapper extends BaseMapper<FwRoomLock> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/FwRoomRepairMapper.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.FwRoomRepair;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: fw_room_repair
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface FwRoomRepairMapper extends BaseMapper<FwRoomRepair> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomCleanMapper.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.FwRoomCleanMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomLockMapper.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.FwRoomLockMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/fw/mapper/xml/FwRoomRepairMapper.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.FwRoomRepairMapper">
+
+</mapper>

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomClean;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_clean
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface IFwRoomCleanService extends IService<FwRoomClean> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomLock;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_lock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface IFwRoomLockService extends IService<FwRoomLock> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.fw.service;
+
+import org.jeecg.modules.fw.entity.FwRoomRepair;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: fw_room_repair
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+public interface IFwRoomRepairService extends IService<FwRoomRepair> {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomClean;
+import org.jeecg.modules.fw.mapper.FwRoomCleanMapper;
+import org.jeecg.modules.fw.service.IFwRoomCleanService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_clean
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomCleanServiceImpl extends ServiceImpl<FwRoomCleanMapper, FwRoomClean> implements IFwRoomCleanService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomLock;
+import org.jeecg.modules.fw.mapper.FwRoomLockMapper;
+import org.jeecg.modules.fw.service.IFwRoomLockService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_lock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomLockServiceImpl extends ServiceImpl<FwRoomLockMapper, FwRoomLock> implements IFwRoomLockService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.fw.service.impl;
+
+import org.jeecg.modules.fw.entity.FwRoomRepair;
+import org.jeecg.modules.fw.mapper.FwRoomRepairMapper;
+import org.jeecg.modules.fw.service.IFwRoomRepairService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: fw_room_repair
+ * @Author: jeecg-boot
+ * @Date:   2023-04-17
+ * @Version: V1.0
+ */
+@Service
+public class FwRoomRepairServiceImpl extends ServiceImpl<FwRoomRepairMapper, FwRoomRepair> implements IFwRoomRepairService {
+
+}

+ 180 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosMealSectionController.java

@@ -0,0 +1,180 @@
+package org.jeecg.modules.pos.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.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosMealSection;
+import org.jeecg.modules.pos.service.IPosMealSectionService;
+
+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: pos_meal_section
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_meal_section")
+@RestController
+@RequestMapping("/pos/posMealSection")
+@Slf4j
+public class PosMealSectionController extends JeecgController<PosMealSection, IPosMealSectionService> {
+	@Autowired
+	private IPosMealSectionService posMealSectionService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posMealSection
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_meal_section-分页列表查询")
+	@ApiOperation(value="pos_meal_section-分页列表查询", notes="pos_meal_section-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosMealSection>> queryPageList(PosMealSection posMealSection,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosMealSection> queryWrapper = QueryGenerator.initQueryWrapper(posMealSection, req.getParameterMap());
+		Page<PosMealSection> page = new Page<PosMealSection>(pageNo, pageSize);
+		IPage<PosMealSection> pageList = posMealSectionService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posMealSection
+	 * @return
+	 */
+	@AutoLog(value = "pos_meal_section-添加")
+	@ApiOperation(value="pos_meal_section-添加", notes="pos_meal_section-添加")
+	//@RequiresPermissions("pos:pos_meal_section:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosMealSection posMealSection) {
+		posMealSection.setTenantId(TokenUtils.currentTenantId());
+		posMealSectionService.save(posMealSection);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posMealSection
+	 * @return
+	 */
+	@AutoLog(value = "pos_meal_section-编辑")
+	@ApiOperation(value="pos_meal_section-编辑", notes="pos_meal_section-编辑")
+	//@RequiresPermissions("pos:pos_meal_section:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosMealSection posMealSection) {
+		posMealSectionService.updateById(posMealSection);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_meal_section-通过id删除")
+	@ApiOperation(value="pos_meal_section-通过id删除", notes="pos_meal_section-通过id删除")
+	//@RequiresPermissions("pos:pos_meal_section:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posMealSectionService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_meal_section-批量删除")
+	@ApiOperation(value="pos_meal_section-批量删除", notes="pos_meal_section-批量删除")
+	//@RequiresPermissions("pos:pos_meal_section:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posMealSectionService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_meal_section-通过id查询")
+	@ApiOperation(value="pos_meal_section-通过id查询", notes="pos_meal_section-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosMealSection> queryById(@RequestParam(name="id",required=true) String id) {
+		PosMealSection posMealSection = posMealSectionService.getById(id);
+		if(posMealSection==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posMealSection);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posMealSection
+    */
+    //@RequiresPermissions("pos:pos_meal_section:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosMealSection posMealSection) {
+        return super.exportXls(request, posMealSection, PosMealSection.class, "pos_meal_section");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_meal_section:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosMealSection.class);
+    }
+
+}

+ 343 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsController.java

@@ -0,0 +1,343 @@
+package org.jeecg.modules.pos.controller;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
+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 cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+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.pos.entity.*;
+import org.jeecg.modules.pos.service.*;
+
+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.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.service.CesGoodsServiceImpl;
+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: pos_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Api(tags="pos_order_goods")
+@RestController
+@RequestMapping("/pos/posOrderGoods")
+@Slf4j
+public class PosOrderGoodsController extends JeecgController<PosOrderGoods, IPosOrderGoodsService> {
+	@Autowired
+	private IPosOrderGoodsService posOrderGoodsService;
+@Autowired
+private IPosOrderGoodsDetailService posOrderGoodsDetailService;
+@Autowired
+private CesGoodsServiceImpl cesGoodsService;
+@Autowired
+private IPosTypeService posTypeService;
+@Autowired
+private IPosOrderGoodsPaymentService posOrderGoodsPaymentService;
+@Autowired
+private IPosTableService posTableService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posOrderGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods-分页列表查询")
+	@ApiOperation(value="pos_order_goods-分页列表查询", notes="pos_order_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosOrderGoods>> queryPageList(PosOrderGoods posOrderGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosOrderGoods> queryWrapper = QueryGenerator.initQueryWrapper(posOrderGoods, req.getParameterMap());
+		Page<PosOrderGoods> page = new Page<PosOrderGoods>(pageNo, pageSize);
+		IPage<PosOrderGoods> pageList = posOrderGoodsService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			PosType posType = posTypeService.getById(item.getPosType());
+			if(posType!=null) {
+				item.setPosTypeName(posType.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 生成16位数字+prefix
+	  * @param prefix
+	  * @return
+	  */
+	 private String randomNumber(String prefix) {
+		 int first = new Random(10).nextInt(8) + 1;
+		 int hashCode = UUID.randomUUID().toString().hashCode();
+		 if (hashCode < 0) {
+			 hashCode = -hashCode;
+		 }
+		 return prefix + first + String.format("%015d", hashCode);
+	 }
+
+	 /**
+	  *   添加
+	  *
+	  * @param posOrderGoods
+	  * @return
+	  */
+	 @AutoLog(value = "pos_order_goods-添加")
+	 @ApiOperation(value="pos_order_goods-添加", notes="pos_order_goods-添加")
+	 //@RequiresPermissions("pos:pos_order_goods:add")
+	 @PostMapping(value = "/add")
+	 public Result<PosOrderGoods> add(@RequestBody PosOrderGoods posOrderGoods) {
+		 if (ObjectUtils.isEmpty(posOrderGoods.getPosOrderGoodsDetailList())) {
+			 return Result.error("请先选择商品");
+		 }
+
+		 if (ObjectUtils.isEmpty(posOrderGoods.getId())) {
+			 if (ObjectUtils.isEmpty(posOrderGoods.getPosTableId())) {
+				 LocalDateTime localDateTime = LocalDateTime.now().withNano(0).withSecond(0).withMinute(0).withHour(0);
+				 LocalDateTime[] arr = new LocalDateTime[]{localDateTime, localDateTime.withHour(23).withMinute(59)};
+				 LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				 lambdaQueryWrapper.eq(PosOrderGoods::getHotelId, posOrderGoods.getHotelId());
+				 lambdaQueryWrapper.ge(PosOrderGoods::getCreateTime, arr[0]);
+				 lambdaQueryWrapper.le(PosOrderGoods::getCreateTime, arr[1]);
+				 lambdaQueryWrapper.isNull(PosOrderGoods::getPosTableId);
+				 Page<PosOrderGoods> page = new Page<PosOrderGoods>(1, 1);
+				 lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+				 IPage<PosOrderGoods> pageList = posOrderGoodsService.page(page, lambdaQueryWrapper);
+				 if (ObjectUtils.isNotEmpty(pageList.getRecords())) {
+					 String no = pageList.getRecords().get(0).getTableNo();
+					 try {
+						 Integer newNo = Integer.parseInt(no) + 1;
+						 posOrderGoods.setTableNo(String.format("%03d", newNo));
+					 } catch (NumberFormatException ex) {
+						 posOrderGoods.setTableNo("001");
+					 }
+				 } else {
+					 posOrderGoods.setTableNo("001");
+				 }
+			 }
+			 posOrderGoods.setCode(randomNumber("P"));
+		 } else {
+			 List<PosOrderGoodsDetail> list = posOrderGoods.getPosOrderGoodsDetailList();
+			 String toRoomFeeOrderId = posOrderGoods.getToRoomFeeOrderId();
+			 String tableId=posOrderGoods.getPosTableId();
+			 String tableNo=posOrderGoods.getTableNo();
+			 posOrderGoods = posOrderGoodsService.getById(posOrderGoods.getId());
+			 posOrderGoods.setPosOrderGoodsDetailList(list);
+			 posOrderGoods.setToRoomFeeOrderId(toRoomFeeOrderId);
+			 posOrderGoods.setPosTableId(tableId);
+			 posOrderGoods.setTableNo(tableNo);
+		 }
+		 if (ObjectUtils.isNotEmpty(posOrderGoods.getToRoomFeeOrderId())) {
+			 posOrderGoods.setStatus(1);
+			 posOrderGoods.setSettleTime(new Date());
+			 posOrderGoods.setPayInfo("挂房账");
+		 }
+		 posOrderGoods.setTenantId(TokenUtils.currentTenantId());
+		 BigDecimal amount = BigDecimal.ZERO;
+		 for (PosOrderGoodsDetail posOrderGoodsDetail : posOrderGoods.getPosOrderGoodsDetailList()) {
+			 amount = amount.add(posOrderGoodsDetail.getMoney().multiply(BigDecimal.valueOf(posOrderGoodsDetail.getNum())));
+			 posOrderGoodsDetail.setTenantId(posOrderGoods.getTenantId());
+			 posOrderGoodsDetail.setHotelId(posOrderGoods.getHotelId());
+			 posOrderGoodsDetail.setOrderId(posOrderGoods.getCode());
+			 posOrderGoodsDetail.setCouponMoney(posOrderGoodsDetail.getMoney());
+			 posOrderGoodsDetail.setPayMoney(posOrderGoodsDetail.getMoney());
+			 posOrderGoodsDetail.setOrderId(posOrderGoods.getCode());
+		 }
+		 posOrderGoods.setMoney(amount);
+		 posOrderGoods.setConsumeMoney(amount);
+		 posOrderGoods.setCreateTime(new Date());
+		 Boolean res = posOrderGoodsService.saveOrUpdate(posOrderGoods);
+		 if (res) {
+			 LambdaQueryWrapper<PosOrderGoodsDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			 lambdaQueryWrapper.eq(PosOrderGoodsDetail::getOrderId, posOrderGoods.getCode());
+			 posOrderGoodsDetailService.remove(lambdaQueryWrapper);
+			 res = posOrderGoodsDetailService.saveBatch(posOrderGoods.getPosOrderGoodsDetailList());
+			 if (res) {
+				 //商品减库存
+				 for (PosOrderGoodsDetail posOrderGoodsDetail : posOrderGoods.getPosOrderGoodsDetailList()) {
+					 CesGoods cesGoods = cesGoodsService.getById(posOrderGoodsDetail.getGoodsId());
+					 if (ObjectUtils.isNotEmpty(cesGoods)) {
+						 Integer c = cesGoods.getInventory() - posOrderGoodsDetail.getNum();
+						 if (c < 0) {
+							 c = 0;
+						 }
+						 cesGoods.setInventory(c);
+						 cesGoodsService.updateById(cesGoods);
+					 }
+				 }
+			 }
+			 LambdaUpdateWrapper<PosTable> lambdaUpdateWrapper=new LambdaUpdateWrapper<>();
+			 lambdaUpdateWrapper.eq(PosTable::getId,posOrderGoods.getPosTableId());
+			 lambdaUpdateWrapper.set(PosTable::getState,2);
+			 posTableService.update(lambdaUpdateWrapper);
+		 }
+		 return Result.OK("添加成功", posOrderGoods);
+	 }
+
+	 /**
+	  * 撤销结账
+	  * @param code
+	  * @return
+	  */
+	 @AutoLog(value = "cancelSettle")
+	 @ApiOperation(value="cancelSettle", notes="cancelSettle")
+	 @RequestMapping(value = "/cancelSettle", method = {RequestMethod.PUT,RequestMethod.POST})
+	 public Result<String> cancelSettle(@RequestParam(name="code",required=true) String code) {
+		 LambdaUpdateWrapper<PosOrderGoods> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+		 lambdaUpdateWrapper.eq(PosOrderGoods::getCode, code);
+		 lambdaUpdateWrapper.set(PosOrderGoods::getStatus, 0);
+		 lambdaUpdateWrapper.set(PosOrderGoods::getPayInfo, "");
+		 posOrderGoodsService.update(lambdaUpdateWrapper);
+
+		 LambdaQueryWrapper<PosOrderGoodsPayment> LambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 LambdaQueryWrapper.eq(PosOrderGoodsPayment::getOrderId, code);
+		 posOrderGoodsPaymentService.remove(LambdaQueryWrapper);
+		 return Result.OK("撤销成功!");
+	 }
+
+	 /**
+	  *   通过code删除
+	  *
+	  * @param code
+	  * @return
+	  */
+	 @AutoLog(value = "pos_order_goods-通过id删除")
+	 @ApiOperation(value="pos_order_goods-通过id删除", notes="pos_order_goods-通过id删除")
+	 //@RequiresPermissions("pos:pos_order_goods:delete")
+	 @DeleteMapping(value = "/deleteOrder")
+	 public Result<String> deleteOrder(@RequestParam(name="code",required=true) String code) {
+		 LambdaQueryWrapper<PosOrderGoods> LambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 LambdaQueryWrapper.eq(PosOrderGoods::getCode, code);
+		 posOrderGoodsService.remove(LambdaQueryWrapper);
+
+		 LambdaQueryWrapper<PosOrderGoodsDetail> LambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+		 LambdaQueryWrapper2.eq(PosOrderGoodsDetail::getOrderId, code);
+		 posOrderGoodsDetailService.remove(LambdaQueryWrapper2);
+
+		 return Result.OK("删除成功!");
+	 }
+
+
+	/**
+	 *  编辑
+	 *
+	 * @param posOrderGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods-编辑")
+	@ApiOperation(value="pos_order_goods-编辑", notes="pos_order_goods-编辑")
+	//@RequiresPermissions("pos:pos_order_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosOrderGoods posOrderGoods) {
+		posOrderGoodsService.updateById(posOrderGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods-通过id删除")
+	@ApiOperation(value="pos_order_goods-通过id删除", notes="pos_order_goods-通过id删除")
+	//@RequiresPermissions("pos:pos_order_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posOrderGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods-批量删除")
+	@ApiOperation(value="pos_order_goods-批量删除", notes="pos_order_goods-批量删除")
+	//@RequiresPermissions("pos:pos_order_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posOrderGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods-通过id查询")
+	@ApiOperation(value="pos_order_goods-通过id查询", notes="pos_order_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosOrderGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		PosOrderGoods posOrderGoods = posOrderGoodsService.getById(id);
+		if(posOrderGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posOrderGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posOrderGoods
+    */
+    //@RequiresPermissions("pos:pos_order_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosOrderGoods posOrderGoods) {
+        return super.exportXls(request, posOrderGoods, PosOrderGoods.class, "pos_order_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_order_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosOrderGoods.class);
+    }
+
+}

+ 190 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsDetailController.java

@@ -0,0 +1,190 @@
+package org.jeecg.modules.pos.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 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.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosOrderGoodsDetail;
+import org.jeecg.modules.pos.entity.PosSellClearGoods;
+import org.jeecg.modules.pos.service.IPosOrderGoodsDetailService;
+
+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.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.service.CesGoodsServiceImpl;
+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: pos_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Api(tags="pos_order_goods_detail")
+@RestController
+@RequestMapping("/pos/posOrderGoodsDetail")
+@Slf4j
+public class PosOrderGoodsDetailController extends JeecgController<PosOrderGoodsDetail, IPosOrderGoodsDetailService> {
+	@Autowired
+	private IPosOrderGoodsDetailService posOrderGoodsDetailService;
+@Autowired
+private CesGoodsServiceImpl cesGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posOrderGoodsDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods_detail-分页列表查询")
+	@ApiOperation(value="pos_order_goods_detail-分页列表查询", notes="pos_order_goods_detail-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosOrderGoodsDetail>> queryPageList(PosOrderGoodsDetail posOrderGoodsDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosOrderGoodsDetail> queryWrapper = QueryGenerator.initQueryWrapper(posOrderGoodsDetail, req.getParameterMap());
+		Page<PosOrderGoodsDetail> page = new Page<PosOrderGoodsDetail>(pageNo, pageSize);
+		IPage<PosOrderGoodsDetail> pageList = posOrderGoodsDetailService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			CesGoods cesGoods = cesGoodsService.getById(item.getGoodsId());
+			if(cesGoods!=null){
+				item.setGoodsName(cesGoods.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posOrderGoodsDetail
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_detail-添加")
+	@ApiOperation(value="pos_order_goods_detail-添加", notes="pos_order_goods_detail-添加")
+	//@RequiresPermissions("pos:pos_order_goods_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosOrderGoodsDetail posOrderGoodsDetail) {
+		posOrderGoodsDetailService.save(posOrderGoodsDetail);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posOrderGoodsDetail
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_detail-编辑")
+	@ApiOperation(value="pos_order_goods_detail-编辑", notes="pos_order_goods_detail-编辑")
+	//@RequiresPermissions("pos:pos_order_goods_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosOrderGoodsDetail posOrderGoodsDetail) {
+		posOrderGoodsDetailService.updateById(posOrderGoodsDetail);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_detail-通过id删除")
+	@ApiOperation(value="pos_order_goods_detail-通过id删除", notes="pos_order_goods_detail-通过id删除")
+	//@RequiresPermissions("pos:pos_order_goods_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posOrderGoodsDetailService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_detail-批量删除")
+	@ApiOperation(value="pos_order_goods_detail-批量删除", notes="pos_order_goods_detail-批量删除")
+	//@RequiresPermissions("pos:pos_order_goods_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posOrderGoodsDetailService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods_detail-通过id查询")
+	@ApiOperation(value="pos_order_goods_detail-通过id查询", notes="pos_order_goods_detail-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosOrderGoodsDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		PosOrderGoodsDetail posOrderGoodsDetail = posOrderGoodsDetailService.getById(id);
+		if(posOrderGoodsDetail==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posOrderGoodsDetail);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posOrderGoodsDetail
+    */
+    //@RequiresPermissions("pos:pos_order_goods_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosOrderGoodsDetail posOrderGoodsDetail) {
+        return super.exportXls(request, posOrderGoodsDetail, PosOrderGoodsDetail.class, "pos_order_goods_detail");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_order_goods_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosOrderGoodsDetail.class);
+    }
+
+}

+ 230 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosOrderGoodsPaymentController.java

@@ -0,0 +1,230 @@
+package org.jeecg.modules.pos.controller;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Date;
+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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+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.business.entity.BusRoomPayType;
+import org.jeecg.modules.business.service.IBusRoomPayTypeService;
+import org.jeecg.modules.pos.dto.OrderPaymentDto;
+import org.jeecg.modules.pos.entity.PosOrderGoods;
+import org.jeecg.modules.pos.entity.PosOrderGoodsPayment;
+import org.jeecg.modules.pos.entity.PosTable;
+import org.jeecg.modules.pos.service.IPosOrderGoodsPaymentService;
+
+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.jeecg.modules.pos.service.IPosOrderGoodsService;
+import org.jeecg.modules.pos.service.IPosTableService;
+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: pos_order_goods_payment
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Api(tags="pos_order_goods_payment")
+@RestController
+@RequestMapping("/pos/posOrderGoodsPayment")
+@Slf4j
+public class PosOrderGoodsPaymentController extends JeecgController<PosOrderGoodsPayment, IPosOrderGoodsPaymentService> {
+	@Autowired
+	private IPosOrderGoodsPaymentService posOrderGoodsPaymentService;
+	 @Autowired
+	 private IPosOrderGoodsService posOrderGoodsService;
+	 @Autowired
+	 private IBusRoomPayTypeService busRoomPayTypeService;
+	 @Autowired
+	 private IPosTableService posTableService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posOrderGoodsPayment
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods_payment-分页列表查询")
+	@ApiOperation(value="pos_order_goods_payment-分页列表查询", notes="pos_order_goods_payment-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosOrderGoodsPayment>> queryPageList(PosOrderGoodsPayment posOrderGoodsPayment,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosOrderGoodsPayment> queryWrapper = QueryGenerator.initQueryWrapper(posOrderGoodsPayment, req.getParameterMap());
+		Page<PosOrderGoodsPayment> page = new Page<PosOrderGoodsPayment>(pageNo, pageSize);
+		IPage<PosOrderGoodsPayment> pageList = posOrderGoodsPaymentService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_payment-添加")
+	@ApiOperation(value="pos_order_goods_payment-添加", notes="pos_order_goods_payment-添加")
+	//@RequiresPermissions("pos:pos_order_goods_payment:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OrderPaymentDto dto) {
+		if (ObjectUtils.isEmpty(dto.getPaymentList())) {
+			return Result.error("请先选择支付方式");
+		}
+		LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PosOrderGoods::getCode, dto.getOrderCode());
+		PosOrderGoods posOrderGoods = posOrderGoodsService.getOne(lambdaQueryWrapper);
+		if (ObjectUtils.isEmpty(posOrderGoods)) {
+			return Result.error("订单不存在");
+		}
+		BigDecimal sum = BigDecimal.ZERO;
+		String payInfo = "";
+		for (PosOrderGoodsPayment posOrderGoodsPayment : dto.getPaymentList()) {
+			posOrderGoodsPayment.setTenantId(posOrderGoods.getTenantId());
+			posOrderGoodsPayment.setHotelId(posOrderGoods.getHotelId());
+			sum = sum.add(posOrderGoodsPayment.getPayMoney());
+			BusRoomPayType busRoomPayType = busRoomPayTypeService.getById(posOrderGoodsPayment.getPaymentMethod());
+			if (busRoomPayType != null) {
+				payInfo += busRoomPayType.getName() + String.format("%.2f", posOrderGoodsPayment.getPayMoney());
+			}
+		}
+		posOrderGoodsPaymentService.saveBatch(dto.getPaymentList());
+		posOrderGoods.setSettleTime(new Date());
+		posOrderGoods.setStatus(1);
+		posOrderGoods.setPayMoney(sum);
+		posOrderGoods.setCouponMoney(posOrderGoods.getConsumeMoney().subtract(sum));
+		posOrderGoods.setPayInfo(payInfo);
+		posOrderGoodsService.updateById(posOrderGoods);
+
+		if (ObjectUtils.isNotEmpty(posOrderGoods.getPosTableId())) {
+			LambdaUpdateWrapper<PosTable> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+			lambdaUpdateWrapper.eq(PosTable::getId, posOrderGoods.getPosTableId());
+			lambdaUpdateWrapper.set(PosTable::getState, 4);
+			posTableService.update(lambdaUpdateWrapper);
+		}
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posOrderGoodsPayment
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_payment-编辑")
+	@ApiOperation(value="pos_order_goods_payment-编辑", notes="pos_order_goods_payment-编辑")
+	//@RequiresPermissions("pos:pos_order_goods_payment:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosOrderGoodsPayment posOrderGoodsPayment) {
+		posOrderGoodsPaymentService.updateById(posOrderGoodsPayment);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_payment-通过id删除")
+	@ApiOperation(value="pos_order_goods_payment-通过id删除", notes="pos_order_goods_payment-通过id删除")
+	//@RequiresPermissions("pos:pos_order_goods_payment:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posOrderGoodsPaymentService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_order_goods_payment-批量删除")
+	@ApiOperation(value="pos_order_goods_payment-批量删除", notes="pos_order_goods_payment-批量删除")
+	//@RequiresPermissions("pos:pos_order_goods_payment:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posOrderGoodsPaymentService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_order_goods_payment-通过id查询")
+	@ApiOperation(value="pos_order_goods_payment-通过id查询", notes="pos_order_goods_payment-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosOrderGoodsPayment> queryById(@RequestParam(name="id",required=true) String id) {
+		PosOrderGoodsPayment posOrderGoodsPayment = posOrderGoodsPaymentService.getById(id);
+		if(posOrderGoodsPayment==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posOrderGoodsPayment);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posOrderGoodsPayment
+    */
+    //@RequiresPermissions("pos:pos_order_goods_payment:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosOrderGoodsPayment posOrderGoodsPayment) {
+        return super.exportXls(request, posOrderGoodsPayment, PosOrderGoodsPayment.class, "pos_order_goods_payment");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_order_goods_payment:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosOrderGoodsPayment.class);
+    }
+
+}

+ 199 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosRegionController.java

@@ -0,0 +1,199 @@
+package org.jeecg.modules.pos.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.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosRegion;
+import org.jeecg.modules.pos.entity.PosTableType;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosRegionService;
+
+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.jeecg.modules.pos.service.IPosTypeService;
+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: pos_region
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_region")
+@RestController
+@RequestMapping("/pos/posRegion")
+@Slf4j
+public class PosRegionController extends JeecgController<PosRegion, IPosRegionService> {
+	@Autowired
+	private IPosRegionService posRegionService;
+	 @Autowired
+	 private IPosTypeService posTypeService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posRegion
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_region-分页列表查询")
+	@ApiOperation(value="pos_region-分页列表查询", notes="pos_region-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosRegion>> queryPageList(PosRegion posRegion,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosRegion> queryWrapper = QueryGenerator.initQueryWrapper(posRegion, req.getParameterMap());
+		Page<PosRegion> page = new Page<PosRegion>(pageNo, pageSize);
+		IPage<PosRegion> pageList = posRegionService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			PosType type = posTypeService.getById(item.getPosTypeId());
+			if (type != null) {
+				item.setTypeName(type.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posRegion
+	 * @return
+	 */
+	@AutoLog(value = "pos_region-添加")
+	@ApiOperation(value="pos_region-添加", notes="pos_region-添加")
+	//@RequiresPermissions("pos:pos_region:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosRegion posRegion) {
+		if (posRegion.getTenantId() == null || posRegion.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posRegion.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posRegionService.save(posRegion);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posRegion
+	 * @return
+	 */
+	@AutoLog(value = "pos_region-编辑")
+	@ApiOperation(value="pos_region-编辑", notes="pos_region-编辑")
+	//@RequiresPermissions("pos:pos_region:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosRegion posRegion) {
+		posRegionService.updateById(posRegion);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_region-通过id删除")
+	@ApiOperation(value="pos_region-通过id删除", notes="pos_region-通过id删除")
+	//@RequiresPermissions("pos:pos_region:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posRegionService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_region-批量删除")
+	@ApiOperation(value="pos_region-批量删除", notes="pos_region-批量删除")
+	//@RequiresPermissions("pos:pos_region:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posRegionService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_region-通过id查询")
+	@ApiOperation(value="pos_region-通过id查询", notes="pos_region-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosRegion> queryById(@RequestParam(name="id",required=true) String id) {
+		PosRegion posRegion = posRegionService.getById(id);
+		if(posRegion==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posRegion);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posRegion
+    */
+    //@RequiresPermissions("pos:pos_region:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosRegion posRegion) {
+        return super.exportXls(request, posRegion, PosRegion.class, "pos_region");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_region:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosRegion.class);
+    }
+
+}

+ 234 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosSellClearGoodsController.java

@@ -0,0 +1,234 @@
+package org.jeecg.modules.pos.controller;
+
+import java.util.ArrayList;
+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 cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusMemberCard;
+import org.jeecg.modules.pos.entity.PosSellClearGoods;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosSellClearGoodsService;
+
+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.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.entity.CesStockType;
+import org.jeecg.modules.rooms.service.CesGoodsServiceImpl;
+import org.jeecg.modules.rooms.service.CesStockTypeServiceImpl;
+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: pos_sell_clear_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_sell_clear_goods")
+@RestController
+@RequestMapping("/pos/posSellClearGoods")
+@Slf4j
+public class PosSellClearGoodsController extends JeecgController<PosSellClearGoods, IPosSellClearGoodsService> {
+	@Autowired
+	private IPosSellClearGoodsService posSellClearGoodsService;
+	@Autowired
+	private CesGoodsServiceImpl cesGoodsService;
+	@Autowired
+	private CesStockTypeServiceImpl cesStockTypeService;
+
+	 /**
+	  * 商品沽清列表
+	  * @param cesGoods
+	  * @param pageNo
+	  * @param pageSize
+	  * @param req
+	  * @return
+	  */
+	 @ApiOperation(value="pos_sell_clear_goods-分页列表查询", notes="pos_sell_clear_goods-分页列表查询")
+	 @GetMapping(value = "/list")
+	 public Result<IPage<CesGoods>> queryPageList(CesGoods cesGoods,
+														   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+												  @RequestParam(name="goodTypes[]",required = false) List<String> goodTypes,
+														   HttpServletRequest req) {
+		 LambdaQueryWrapper<CesGoods> queryWrapper = QueryGenerator.initQueryWrapper(cesGoods, req.getParameterMap()).lambda();
+		 queryWrapper.eq(CesGoods::getInvalid,false);
+		 queryWrapper.eq(CesGoods::getIsTemp,false);
+		 if (ObjectUtils.isNotEmpty(goodTypes)) {
+			 List<CesStockType> list = cesStockTypeService.list(Wrappers.<CesStockType>lambdaQuery()
+					 .eq(CesStockType::getHotelId, cesGoods.getHotelId())
+					 .eq(CesStockType::getInvalid, false));
+			 queryWrapper.and(j -> {
+				 for (int k = 0; k < goodTypes.size(); k++) {
+					 String id = goodTypes.get(k);
+					 List<CesStockType> stockTypeList = list.stream().filter(t -> t.getParentId().equals(id)).collect(Collectors.toList());
+					 if (ObjectUtils.isNotEmpty(stockTypeList)) {
+						 for (int z = 0; z < stockTypeList.size(); z++) {
+							 j = j.or().eq(CesGoods::getGoodType, stockTypeList.get(z).getId());
+						 }
+					 }
+					 j = j.or().eq(CesGoods::getGoodType, id);
+				 }
+			 });
+		 }
+		 Page<CesGoods> page = new Page<CesGoods>(pageNo, pageSize);
+		 IPage<CesGoods> pageList = cesGoodsService.page(page, queryWrapper);
+		 pageList.getRecords().forEach(item -> {
+			 LambdaQueryWrapper<PosSellClearGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			 lambdaQueryWrapper.eq(PosSellClearGoods::getGoodsId, item.getId());
+			 Long count = posSellClearGoodsService.count(lambdaQueryWrapper);
+			 item.setIsSellClear(count > 0);
+		 });
+		 return Result.OK(pageList);
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param posSellClearGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_sell_clear_goods-添加")
+	@ApiOperation(value="pos_sell_clear_goods-添加", notes="pos_sell_clear_goods-添加")
+	//@RequiresPermissions("pos:pos_sell_clear_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosSellClearGoods posSellClearGoods) {
+		if (posSellClearGoods.getTenantId() == null || posSellClearGoods.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posSellClearGoods.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posSellClearGoodsService.save(posSellClearGoods);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posSellClearGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_sell_clear_goods-编辑")
+	@ApiOperation(value="pos_sell_clear_goods-编辑", notes="pos_sell_clear_goods-编辑")
+	//@RequiresPermissions("pos:pos_sell_clear_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosSellClearGoods posSellClearGoods) {
+		posSellClearGoodsService.updateById(posSellClearGoods);
+		return Result.OK("编辑成功!");
+	}
+	 /**
+	  *   通过goodsId删除
+	  *
+	  * @param goodsId
+	  * @return
+	  */
+	 @AutoLog(value = "pos_sell_clear_goods-通过id删除")
+	 @ApiOperation(value="pos_sell_clear_goods-通过id删除", notes="pos_sell_clear_goods-通过id删除")
+	 //@RequiresPermissions("pos:pos_sell_clear_goods:delete")
+	 @DeleteMapping(value = "/delete")
+	 public Result<String> delete(@RequestParam(name="goodsId",required=true) String goodsId) {
+		 LambdaQueryWrapper<PosSellClearGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		 lambdaQueryWrapper.eq(PosSellClearGoods::getGoodsId, goodsId);
+		 posSellClearGoodsService.remove(lambdaQueryWrapper);
+		 return Result.OK("删除成功!");
+	 }
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_sell_clear_goods-批量删除")
+	@ApiOperation(value="pos_sell_clear_goods-批量删除", notes="pos_sell_clear_goods-批量删除")
+	//@RequiresPermissions("pos:pos_sell_clear_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posSellClearGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_sell_clear_goods-通过id查询")
+	@ApiOperation(value="pos_sell_clear_goods-通过id查询", notes="pos_sell_clear_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosSellClearGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		PosSellClearGoods posSellClearGoods = posSellClearGoodsService.getById(id);
+		if(posSellClearGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posSellClearGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posSellClearGoods
+    */
+    //@RequiresPermissions("pos:pos_sell_clear_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosSellClearGoods posSellClearGoods) {
+        return super.exportXls(request, posSellClearGoods, PosSellClearGoods.class, "pos_sell_clear_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_sell_clear_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosSellClearGoods.class);
+    }
+
+}

+ 280 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableController.java

@@ -0,0 +1,280 @@
+package org.jeecg.modules.pos.controller;
+
+import java.util.Arrays;
+import java.util.Date;
+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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusHotel;
+import org.jeecg.modules.business.service.IBusHotelService;
+import org.jeecg.modules.pos.entity.*;
+import org.jeecg.modules.pos.service.*;
+
+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: pos_table
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_table")
+@RestController
+@RequestMapping("/pos/posTable")
+@Slf4j
+public class PosTableController extends JeecgController<PosTable, IPosTableService> {
+	@Autowired
+	private IPosTableService posTableService;
+	 @Autowired
+	 private IPosTypeService posTypeService;
+	 @Autowired
+	 private IPosRegionService posRegionService;
+	 @Autowired
+	 private IPosTableTypeService posTableTypeService;
+	 @Autowired
+	 private IPosOrderGoodsService posOrderGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posTable
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table-分页列表查询")
+	@ApiOperation(value="pos_table-分页列表查询", notes="pos_table-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosTable>> queryPageList(PosTable posTable,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosTable> queryWrapper = QueryGenerator.initQueryWrapper(posTable, req.getParameterMap());
+		Page<PosTable> page = new Page<PosTable>(pageNo, pageSize);
+		IPage<PosTable> pageList = posTableService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			PosType type = posTypeService.getById(item.getPosTypeId());
+			if (type != null) {
+				item.setTypeName(type.getName());
+			}
+			PosRegion region = posRegionService.getById(item.getPosRegionId());
+			if (region != null) {
+				item.setRegionName(region.getName());
+			}
+			PosTableType tableType = posTableTypeService.getById(item.getPosTableTypeId());
+			if (tableType != null) {
+				item.setTableTypeName(tableType.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 查询桌台用餐列表
+	  * @param posTable
+	  * @param pageNo
+	  * @param pageSize
+	  * @param req
+	  * @return
+	  */
+	 @ApiOperation(value="pos_table-分页列表查询", notes="pos_table-分页列表查询")
+	 @GetMapping(value = "/tableList")
+	 public Result<IPage<PosTable>> tableList(PosTable posTable,
+												  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+												  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+												  HttpServletRequest req) {
+		 QueryWrapper<PosTable> queryWrapper = QueryGenerator.initQueryWrapper(posTable, req.getParameterMap());
+		 Page<PosTable> page = new Page<PosTable>(pageNo, pageSize);
+		 IPage<PosTable> pageList = posTableService.page(page, queryWrapper);
+		 pageList.getRecords().forEach(item -> {
+		 	if(item.getState().equals(2)||item.getState().equals(3)||item.getState().equals(4)) {
+				LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, item.getId());
+				lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+				Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
+				lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+				IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
+				if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
+					item.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
+				}
+			}
+		 });
+		 return Result.OK(pageList);
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param posTable
+	 * @return
+	 */
+	@AutoLog(value = "pos_table-添加")
+	@ApiOperation(value="pos_table-添加", notes="pos_table-添加")
+	//@RequiresPermissions("pos:pos_table:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosTable posTable) {
+		if (posTable.getTenantId() == null || posTable.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posTable.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posTableService.save(posTable);
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  *  桌台用餐下单
+	  *
+	  * @param posTable
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table-桌台用餐下单")
+	 @ApiOperation(value="pos_table-桌台用餐下单", notes="pos_table-桌台用餐下单")
+	 @RequestMapping(value = "/addOrder", method = {RequestMethod.PUT,RequestMethod.POST})
+	 public Result<String> addOrder(@RequestBody PosTable posTable) {
+		 PosTable table = posTableService.getById(posTable.getId());
+		 if (!table.getState().equals(0)) {
+			 return Result.error("不是空桌状态,不能下单!");
+		 }
+		 posTable.setState(1);
+		 posTable.setOrderTime(new Date());
+		 posTableService.updateById(posTable);
+		 return Result.OK("下单成功!");
+	 }
+
+	/**
+	 *  编辑
+	 *
+	 * @param posTable
+	 * @return
+	 */
+	@AutoLog(value = "pos_table-编辑")
+	@ApiOperation(value="pos_table-编辑", notes="pos_table-编辑")
+	//@RequiresPermissions("pos:pos_table:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosTable posTable) {
+		posTableService.updateById(posTable);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_table-通过id删除")
+	@ApiOperation(value="pos_table-通过id删除", notes="pos_table-通过id删除")
+	//@RequiresPermissions("pos:pos_table:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posTableService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_table-批量删除")
+	@ApiOperation(value="pos_table-批量删除", notes="pos_table-批量删除")
+	//@RequiresPermissions("pos:pos_table:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posTableService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table-通过id查询")
+	@ApiOperation(value="pos_table-通过id查询", notes="pos_table-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosTable> queryById(@RequestParam(name="id",required=true) String id) {
+		PosTable posTable = posTableService.getById(id);
+		if(posTable==null) {
+			return Result.error("未找到对应数据");
+		}
+		if(posTable.getState().equals(2)) {
+			LambdaQueryWrapper<PosOrderGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PosOrderGoods::getPosTableId, posTable.getId());
+			lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+			Page<PosOrderGoods> page2 = new Page<PosOrderGoods>(1, 1);
+			lambdaQueryWrapper.orderByDesc(PosOrderGoods::getCreateTime);
+			IPage<PosOrderGoods> posOrderGoodsList = posOrderGoodsService.page(page2, lambdaQueryWrapper);
+			if (ObjectUtils.isNotEmpty(posOrderGoodsList.getRecords())) {
+				posTable.setPosOrderGoods(posOrderGoodsList.getRecords().get(0));
+			}
+		}
+		return Result.OK(posTable);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posTable
+    */
+    //@RequiresPermissions("pos:pos_table:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosTable posTable) {
+        return super.exportXls(request, posTable, PosTable.class, "pos_table");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_table:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosTable.class);
+    }
+
+}

+ 198 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableTypeController.java

@@ -0,0 +1,198 @@
+package org.jeecg.modules.pos.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.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosTableType;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosTableTypeService;
+
+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.jeecg.modules.pos.service.IPosTypeService;
+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: pos_table_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_table_type")
+@RestController
+@RequestMapping("/pos/posTableType")
+@Slf4j
+public class PosTableTypeController extends JeecgController<PosTableType, IPosTableTypeService> {
+	@Autowired
+	private IPosTableTypeService posTableTypeService;
+	 @Autowired
+	 private IPosTypeService posTypeService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posTableType
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table_type-分页列表查询")
+	@ApiOperation(value="pos_table_type-分页列表查询", notes="pos_table_type-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosTableType>> queryPageList(PosTableType posTableType,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosTableType> queryWrapper = QueryGenerator.initQueryWrapper(posTableType, req.getParameterMap());
+		Page<PosTableType> page = new Page<PosTableType>(pageNo, pageSize);
+		IPage<PosTableType> pageList = posTableTypeService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			PosType type = posTypeService.getById(item.getPosTypeId());
+			if (type != null) {
+				item.setTypeName(type.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posTableType
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type-添加")
+	@ApiOperation(value="pos_table_type-添加", notes="pos_table_type-添加")
+	//@RequiresPermissions("pos:pos_table_type:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosTableType posTableType) {
+		if (posTableType.getTenantId() == null || posTableType.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posTableType.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posTableTypeService.save(posTableType);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posTableType
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type-编辑")
+	@ApiOperation(value="pos_table_type-编辑", notes="pos_table_type-编辑")
+	//@RequiresPermissions("pos:pos_table_type:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosTableType posTableType) {
+		posTableTypeService.updateById(posTableType);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type-通过id删除")
+	@ApiOperation(value="pos_table_type-通过id删除", notes="pos_table_type-通过id删除")
+	//@RequiresPermissions("pos:pos_table_type:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posTableTypeService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type-批量删除")
+	@ApiOperation(value="pos_table_type-批量删除", notes="pos_table_type-批量删除")
+	//@RequiresPermissions("pos:pos_table_type:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posTableTypeService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table_type-通过id查询")
+	@ApiOperation(value="pos_table_type-通过id查询", notes="pos_table_type-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosTableType> queryById(@RequestParam(name="id",required=true) String id) {
+		PosTableType posTableType = posTableTypeService.getById(id);
+		if(posTableType==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posTableType);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posTableType
+    */
+    //@RequiresPermissions("pos:pos_table_type:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosTableType posTableType) {
+        return super.exportXls(request, posTableType, PosTableType.class, "pos_table_type");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_table_type:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosTableType.class);
+    }
+
+}

+ 243 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTableTypeInGoodsController.java

@@ -0,0 +1,243 @@
+package org.jeecg.modules.pos.controller;
+
+import java.util.*;
+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 com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusCancel;
+import org.jeecg.modules.pos.entity.PosTableType;
+import org.jeecg.modules.pos.entity.PosTableTypeInGoods;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosTableTypeInGoodsService;
+
+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.jeecg.modules.pos.service.IPosTableTypeService;
+import org.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.service.CesGoodsServiceImpl;
+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: pos_table_type_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_table_type_in_goods")
+@RestController
+@RequestMapping("/pos/posTableTypeInGoods")
+@Slf4j
+public class PosTableTypeInGoodsController extends JeecgController<PosTableTypeInGoods, IPosTableTypeInGoodsService> {
+	@Autowired
+	private IPosTableTypeInGoodsService posTableTypeInGoodsService;
+	@Autowired
+	private CesGoodsServiceImpl cesGoodsService;
+	 @Autowired
+	 private IPosTableTypeService posTableTypeService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posTableTypeInGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table_type_in_goods-分页列表查询")
+	@ApiOperation(value="pos_table_type_in_goods-分页列表查询", notes="pos_table_type_in_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosTableTypeInGoods>> queryPageList(PosTableTypeInGoods posTableTypeInGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosTableTypeInGoods> queryWrapper = QueryGenerator.initQueryWrapper(posTableTypeInGoods, req.getParameterMap());
+		Page<PosTableTypeInGoods> page = new Page<PosTableTypeInGoods>(pageNo, pageSize);
+		IPage<PosTableTypeInGoods> pageList = posTableTypeInGoodsService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			CesGoods goods = cesGoodsService.getById(item.getGoodsId());
+			if (goods != null) {
+				item.setGoodsName(goods.getName());
+				item.setPrice(goods.getSellingPrice());
+			}
+			PosTableType tableType = posTableTypeService.getById(item.getPosTableTypeId());
+			if (tableType != null) {
+				item.setTableTypeName(tableType.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posTableTypeInGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type_in_goods-添加")
+	@ApiOperation(value="pos_table_type_in_goods-添加", notes="pos_table_type_in_goods-添加")
+	//@RequiresPermissions("pos:pos_table_type_in_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosTableTypeInGoods posTableTypeInGoods) {
+		if (posTableTypeInGoods.getTenantId() == null || posTableTypeInGoods.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posTableTypeInGoods.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posTableTypeInGoodsService.save(posTableTypeInGoods);
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  * 批量添加
+	  * @param posTableTypeInGoodsList
+	  * @return
+	  */
+	 @AutoLog(value = "pos_table_type_in_goods-批量添加")
+	 @ApiOperation(value="pos_table_type_in_goods-批量添加", notes="pos_table_type_in_goods-批量添加")
+	 @PostMapping(value = "/addBatch")
+	 public Result<String> addBatch(@RequestBody List<PosTableTypeInGoods> posTableTypeInGoodsList) {
+		 String tenantId = "";
+		 LoginUser user = TokenUtils.getAuthUser();
+		 if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+			 tenantId = user.getRelTenantIds();
+		 } else {
+			 throw new JeecgBootException("当前登录人租户信息错误");
+		 }
+		 List<PosTableTypeInGoods> list = new ArrayList<PosTableTypeInGoods>();
+		 for (PosTableTypeInGoods posTableTypeInGoods : posTableTypeInGoodsList) {
+			 posTableTypeInGoods.setTenantId(tenantId);
+			 LambdaQueryWrapper<PosTableTypeInGoods> queryWrapper = new LambdaQueryWrapper<PosTableTypeInGoods>();
+			 queryWrapper.eq(PosTableTypeInGoods::getHotelId, posTableTypeInGoods.getHotelId());
+			 queryWrapper.eq(PosTableTypeInGoods::getGoodsId, posTableTypeInGoods.getGoodsId());
+			 queryWrapper.eq(PosTableTypeInGoods::getPosTableTypeId, posTableTypeInGoods.getPosTableTypeId());
+			 Long count = this.posTableTypeInGoodsService.count(queryWrapper);
+			 if (count <= 0) {
+				 list.add(posTableTypeInGoods);
+			 }
+		 }
+		 this.posTableTypeInGoodsService.saveBatch(list);
+		 return Result.OK("添加成功!");
+	 }
+
+
+	 /**
+	 *  编辑
+	 *
+	 * @param posTableTypeInGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type_in_goods-编辑")
+	@ApiOperation(value="pos_table_type_in_goods-编辑", notes="pos_table_type_in_goods-编辑")
+	//@RequiresPermissions("pos:pos_table_type_in_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosTableTypeInGoods posTableTypeInGoods) {
+		posTableTypeInGoodsService.updateById(posTableTypeInGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type_in_goods-通过id删除")
+	@ApiOperation(value="pos_table_type_in_goods-通过id删除", notes="pos_table_type_in_goods-通过id删除")
+	//@RequiresPermissions("pos:pos_table_type_in_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posTableTypeInGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_table_type_in_goods-批量删除")
+	@ApiOperation(value="pos_table_type_in_goods-批量删除", notes="pos_table_type_in_goods-批量删除")
+	//@RequiresPermissions("pos:pos_table_type_in_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posTableTypeInGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_table_type_in_goods-通过id查询")
+	@ApiOperation(value="pos_table_type_in_goods-通过id查询", notes="pos_table_type_in_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosTableTypeInGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		PosTableTypeInGoods posTableTypeInGoods = posTableTypeInGoodsService.getById(id);
+		if(posTableTypeInGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posTableTypeInGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posTableTypeInGoods
+    */
+    //@RequiresPermissions("pos:pos_table_type_in_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosTableTypeInGoods posTableTypeInGoods) {
+        return super.exportXls(request, posTableTypeInGoods, PosTableTypeInGoods.class, "pos_table_type_in_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_table_type_in_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosTableTypeInGoods.class);
+    }
+
+}

+ 225 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosThaliController.java

@@ -0,0 +1,225 @@
+package org.jeecg.modules.pos.controller;
+
+import java.util.ArrayList;
+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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.UUIDGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosThali;
+import org.jeecg.modules.pos.entity.PosThaliInGoods;
+import org.jeecg.modules.pos.service.IPosThaliInGoodsService;
+import org.jeecg.modules.pos.service.IPosThaliService;
+
+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: pos_thali
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_thali")
+@RestController
+@RequestMapping("/pos/posThali")
+@Slf4j
+public class PosThaliController extends JeecgController<PosThali, IPosThaliService> {
+	@Autowired
+	private IPosThaliService posThaliService;
+	@Autowired
+	private IPosThaliInGoodsService posThaliInGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posThali
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_thali-分页列表查询")
+	@ApiOperation(value="pos_thali-分页列表查询", notes="pos_thali-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosThali>> queryPageList(PosThali posThali,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosThali> queryWrapper = QueryGenerator.initQueryWrapper(posThali, req.getParameterMap());
+		Page<PosThali> page = new Page<PosThali>(pageNo, pageSize);
+		IPage<PosThali> pageList = posThaliService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posThali
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali-添加")
+	@ApiOperation(value="pos_thali-添加", notes="pos_thali-添加")
+	//@RequiresPermissions("pos:pos_thali:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosThali posThali) {
+		if (posThali.getTenantId() == null || posThali.getTenantId().equals("")) {
+			LoginUser user = TokenUtils.getAuthUser();
+			if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+				posThali.setTenantId(user.getRelTenantIds());
+			} else {
+				throw new JeecgBootException("当前登录人租户信息错误");
+			}
+		}
+		posThali.setId(UUIDGenerator.generate());
+		boolean res = posThaliService.save(posThali);
+		if (res) {
+			if (ObjectUtils.isNotEmpty(posThali.getPosThaliInGoodsList())) {
+				posThali.getPosThaliInGoodsList().forEach(t -> {
+					t.setGoodsId(t.getId());
+					t.setId("");
+					t.setHotelId(posThali.getHotelId());
+					t.setPosThaliId(posThali.getId());
+					t.setTenantId(TokenUtils.currentTenantId());
+				});
+				posThaliInGoodsService.saveBatch(posThali.getPosThaliInGoodsList());
+			}
+		}
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posThali
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali-编辑")
+	@ApiOperation(value="pos_thali-编辑", notes="pos_thali-编辑")
+	//@RequiresPermissions("pos:pos_thali:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosThali posThali) {
+		Boolean res = posThaliService.updateById(posThali);
+		if (res) {
+			LambdaQueryWrapper<PosThaliInGoods> lambdaQueryWrapper=new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PosThaliInGoods::getPosThaliId,posThali.getId());
+			posThaliInGoodsService.remove(lambdaQueryWrapper);
+			if (ObjectUtils.isNotEmpty(posThali.getPosThaliInGoodsList())) {
+				posThali.getPosThaliInGoodsList().forEach(t -> {
+					t.setGoodsId(t.getId());
+					t.setId("");
+					t.setHotelId(posThali.getHotelId());
+					t.setPosThaliId(posThali.getId());
+					t.setTenantId(TokenUtils.currentTenantId());
+				});
+				posThaliInGoodsService.saveBatch(posThali.getPosThaliInGoodsList());
+			}
+		}
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali-通过id删除")
+	@ApiOperation(value="pos_thali-通过id删除", notes="pos_thali-通过id删除")
+	//@RequiresPermissions("pos:pos_thali:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posThaliService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali-批量删除")
+	@ApiOperation(value="pos_thali-批量删除", notes="pos_thali-批量删除")
+	//@RequiresPermissions("pos:pos_thali:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posThaliService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_thali-通过id查询")
+	@ApiOperation(value="pos_thali-通过id查询", notes="pos_thali-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosThali> queryById(@RequestParam(name="id",required=true) String id) {
+		PosThali posThali = posThaliService.getById(id);
+		if(posThali==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posThali);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posThali
+    */
+    //@RequiresPermissions("pos:pos_thali:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosThali posThali) {
+        return super.exportXls(request, posThali, PosThali.class, "pos_thali");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_thali:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosThali.class);
+    }
+
+}

+ 193 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosThaliInGoodsController.java

@@ -0,0 +1,193 @@
+package org.jeecg.modules.pos.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.pos.entity.PosThaliInGoods;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosThaliInGoodsService;
+
+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.jeecg.modules.pos.service.IPosTypeService;
+import org.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.service.CesGoodsServiceImpl;
+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: pos_thali_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_thali_in_goods")
+@RestController
+@RequestMapping("/pos/posThaliInGoods")
+@Slf4j
+public class PosThaliInGoodsController extends JeecgController<PosThaliInGoods, IPosThaliInGoodsService> {
+	@Autowired
+	private IPosThaliInGoodsService posThaliInGoodsService;
+	 @Autowired
+	 private CesGoodsServiceImpl cesGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posThaliInGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_thali_in_goods-分页列表查询")
+	@ApiOperation(value="pos_thali_in_goods-分页列表查询", notes="pos_thali_in_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosThaliInGoods>> queryPageList(PosThaliInGoods posThaliInGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosThaliInGoods> queryWrapper = QueryGenerator.initQueryWrapper(posThaliInGoods, req.getParameterMap());
+		Page<PosThaliInGoods> page = new Page<PosThaliInGoods>(pageNo, pageSize);
+		IPage<PosThaliInGoods> pageList = posThaliInGoodsService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			CesGoods goods = cesGoodsService.getById(item.getGoodsId());
+			if (goods != null) {
+				item.setName(goods.getName());
+				item.setBarCode(goods.getBarCode());
+				item.setInventory(goods.getInventory());
+				item.setSellingPrice(goods.getSellingPrice());
+				item.setId(goods.getId());
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posThaliInGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali_in_goods-添加")
+	@ApiOperation(value="pos_thali_in_goods-添加", notes="pos_thali_in_goods-添加")
+	//@RequiresPermissions("pos:pos_thali_in_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosThaliInGoods posThaliInGoods) {
+		posThaliInGoodsService.save(posThaliInGoods);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posThaliInGoods
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali_in_goods-编辑")
+	@ApiOperation(value="pos_thali_in_goods-编辑", notes="pos_thali_in_goods-编辑")
+	//@RequiresPermissions("pos:pos_thali_in_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosThaliInGoods posThaliInGoods) {
+		posThaliInGoodsService.updateById(posThaliInGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali_in_goods-通过id删除")
+	@ApiOperation(value="pos_thali_in_goods-通过id删除", notes="pos_thali_in_goods-通过id删除")
+	//@RequiresPermissions("pos:pos_thali_in_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posThaliInGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_thali_in_goods-批量删除")
+	@ApiOperation(value="pos_thali_in_goods-批量删除", notes="pos_thali_in_goods-批量删除")
+	//@RequiresPermissions("pos:pos_thali_in_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posThaliInGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_thali_in_goods-通过id查询")
+	@ApiOperation(value="pos_thali_in_goods-通过id查询", notes="pos_thali_in_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosThaliInGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		PosThaliInGoods posThaliInGoods = posThaliInGoodsService.getById(id);
+		if(posThaliInGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posThaliInGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posThaliInGoods
+    */
+    //@RequiresPermissions("pos:pos_thali_in_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosThaliInGoods posThaliInGoods) {
+        return super.exportXls(request, posThaliInGoods, PosThaliInGoods.class, "pos_thali_in_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_thali_in_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosThaliInGoods.class);
+    }
+
+}

+ 180 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/controller/PosTypeController.java

@@ -0,0 +1,180 @@
+package org.jeecg.modules.pos.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.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.pos.entity.PosType;
+import org.jeecg.modules.pos.service.IPosTypeService;
+
+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: pos_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Api(tags="pos_type")
+@RestController
+@RequestMapping("/pos/posType")
+@Slf4j
+public class PosTypeController extends JeecgController<PosType, IPosTypeService> {
+	@Autowired
+	private IPosTypeService posTypeService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param posType
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "pos_type-分页列表查询")
+	@ApiOperation(value="pos_type-分页列表查询", notes="pos_type-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<PosType>> queryPageList(PosType posType,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<PosType> queryWrapper = QueryGenerator.initQueryWrapper(posType, req.getParameterMap());
+		Page<PosType> page = new Page<PosType>(pageNo, pageSize);
+		IPage<PosType> pageList = posTypeService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param posType
+	 * @return
+	 */
+	@AutoLog(value = "pos_type-添加")
+	@ApiOperation(value="pos_type-添加", notes="pos_type-添加")
+	//@RequiresPermissions("pos:pos_type:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody PosType posType) {
+		posType.setTenantId(TokenUtils.currentTenantId());
+		posTypeService.save(posType);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param posType
+	 * @return
+	 */
+	@AutoLog(value = "pos_type-编辑")
+	@ApiOperation(value="pos_type-编辑", notes="pos_type-编辑")
+	//@RequiresPermissions("pos:pos_type:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody PosType posType) {
+		posTypeService.updateById(posType);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "pos_type-通过id删除")
+	@ApiOperation(value="pos_type-通过id删除", notes="pos_type-通过id删除")
+	//@RequiresPermissions("pos:pos_type:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		posTypeService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "pos_type-批量删除")
+	@ApiOperation(value="pos_type-批量删除", notes="pos_type-批量删除")
+	//@RequiresPermissions("pos:pos_type:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.posTypeService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "pos_type-通过id查询")
+	@ApiOperation(value="pos_type-通过id查询", notes="pos_type-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<PosType> queryById(@RequestParam(name="id",required=true) String id) {
+		PosType posType = posTypeService.getById(id);
+		if(posType==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(posType);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param posType
+    */
+    //@RequiresPermissions("pos:pos_type:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, PosType posType) {
+        return super.exportXls(request, posType, PosType.class, "pos_type");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("pos:pos_type:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, PosType.class);
+    }
+
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/dto/OrderPaymentDto.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.pos.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusBookingBatch;
+import org.jeecg.modules.business.entity.BusBookingLayoutDayPrice;
+import org.jeecg.modules.business.entity.BusRoomBookingOrders;
+import org.jeecg.modules.pos.entity.PosOrderGoodsPayment;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+public class OrderPaymentDto {
+    private List<PosOrderGoodsPayment> paymentList;
+    private String orderCode;
+    private BigDecimal couponPrice;
+}

+ 59 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosMealSection.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.pos.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: pos_meal_section
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_meal_section")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_meal_section对象", description="pos_meal_section")
+public class PosMealSection implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**区域名称*/
+	@Excel(name = "区域名称", width = 15)
+    @ApiModelProperty(value = "区域名称")
+    private java.lang.String name;
+	/**开始时间*/
+	@Excel(name = "开始时间", width = 15)
+    @ApiModelProperty(value = "开始时间")
+    private java.lang.String startTime;
+	/**结束时间*/
+	@Excel(name = "结束时间", width = 15)
+    @ApiModelProperty(value = "结束时间")
+    private java.lang.String endTime;
+}

+ 119 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoods.java

@@ -0,0 +1,119 @@
+package org.jeecg.modules.pos.entity;
+
+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;
+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: pos_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_order_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_order_goods对象", description="pos_order_goods")
+public class PosOrderGoods implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 memberId;
+	/**单据号*/
+	@Excel(name = "单据号", width = 15)
+    @ApiModelProperty(value = "单据号")
+    private String code;
+    /**桌台id*/
+    @Excel(name = "桌台id", width = 15)
+    @ApiModelProperty(value = "桌台id")
+    private String posTableId;
+	/**桌号/取餐号*/
+	@Excel(name = "桌号/取餐号", width = 15)
+    @ApiModelProperty(value = "桌号/取餐号")
+    private String tableNo;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+	/**支付方式*/
+	@Excel(name = "支付方式", width = 15)
+    @ApiModelProperty(value = "支付方式")
+    private String paymentMethod;
+	/**支付金额*/
+	@Excel(name = "支付金额", width = 15)
+    @ApiModelProperty(value = "支付金额")
+    private BigDecimal payMoney;
+	/**pos类型*/
+	@Excel(name = "pos类型", width = 15)
+    @ApiModelProperty(value = "pos类型")
+    private String posType;
+	/**挂房账订单id*/
+	@Excel(name = "挂房账订单id", width = 15)
+    @ApiModelProperty(value = "挂房账订单id")
+    private String toRoomFeeOrderId;
+	/**应收金额*/
+	@Excel(name = "应收金额", width = 15)
+    @ApiModelProperty(value = "应收金额")
+    private BigDecimal money;
+	/**结账状态*/
+	@Excel(name = "结账状态", width = 15)
+    @ApiModelProperty(value = "结账状态")
+    private Integer status;
+	/**优惠金额*/
+	@Excel(name = "优惠金额", width = 15)
+    @ApiModelProperty(value = "优惠金额")
+    private BigDecimal couponMoney;
+	/**消费金额*/
+	@Excel(name = "消费金额", width = 15)
+    @ApiModelProperty(value = "消费金额")
+    private BigDecimal consumeMoney;
+	/**结账时间*/
+	@Excel(name = "结账时间", width = 15, format = "yyyy-MM-dd")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "结账时间")
+    private Date settleTime;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**支付信息*/
+    @Excel(name = "支付信息", width = 15)
+    @ApiModelProperty(value = "支付信息")
+    private String payInfo;
+
+	@TableField(exist = false)
+	private List<PosOrderGoodsDetail> posOrderGoodsDetailList;
+
+    @TableField(exist = false)
+    private String posTypeName;
+}

+ 72 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoodsDetail.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.pos.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: pos_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_order_goods_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_order_goods_detail对象", description="pos_order_goods_detail")
+public class PosOrderGoodsDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 orderId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+	/**原价*/
+	@Excel(name = "原价", width = 15)
+    @ApiModelProperty(value = "原价")
+    private BigDecimal money;
+	/**优惠价*/
+	@Excel(name = "优惠价", width = 15)
+    @ApiModelProperty(value = "优惠价")
+    private BigDecimal couponMoney;
+	/**金额*/
+	@Excel(name = "金额", width = 15)
+    @ApiModelProperty(value = "金额")
+    private BigDecimal payMoney;
+
+	@TableField(exist = false)
+	private  String goodsName;
+}

+ 64 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosOrderGoodsPayment.java

@@ -0,0 +1,64 @@
+package org.jeecg.modules.pos.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: pos_order_goods_payment
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_order_goods_payment")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_order_goods_payment对象", description="pos_order_goods_payment")
+public class PosOrderGoodsPayment implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    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 orderId;
+	/**支付方式*/
+	@Excel(name = "支付方式", width = 15)
+    @ApiModelProperty(value = "支付方式")
+    private String paymentMethod;
+	/**支付金额*/
+	@Excel(name = "支付金额", width = 15)
+    @ApiModelProperty(value = "支付金额")
+    private BigDecimal payMoney;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+}

+ 57 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosRegion.java

@@ -0,0 +1,57 @@
+package org.jeecg.modules.pos.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: pos_region
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_region")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_region对象", description="pos_region")
+public class PosRegion implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**区域名称*/
+	@Excel(name = "区域名称", width = 15)
+    @ApiModelProperty(value = "区域名称")
+    private java.lang.String name;
+	/**pos类型id*/
+	@Excel(name = "pos类型id", width = 15)
+    @ApiModelProperty(value = "pos类型id")
+    private java.lang.String posTypeId;
+
+
+    @TableField(exist = false)
+    private  String typeName;
+}

+ 51 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosSellClearGoods.java

@@ -0,0 +1,51 @@
+package org.jeecg.modules.pos.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: pos_sell_clear_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_sell_clear_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_sell_clear_goods对象", description="pos_sell_clear_goods")
+public class PosSellClearGoods implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private java.lang.String goodsId;
+}

+ 96 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosTable.java

@@ -0,0 +1,96 @@
+package org.jeecg.modules.pos.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: pos_table
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_table")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_table对象", description="pos_table")
+public class PosTable implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**餐桌名称*/
+	@Excel(name = "餐桌名称", width = 15)
+    @ApiModelProperty(value = "餐桌名称")
+    private java.lang.String name;
+	/**pos类型id*/
+	@Excel(name = "pos类型id", width = 15)
+    @ApiModelProperty(value = "pos类型id")
+    private java.lang.String posTypeId;
+	/**pos桌型id*/
+	@Excel(name = "pos桌型id", width = 15)
+    @ApiModelProperty(value = "pos桌型id")
+    private java.lang.String posTableTypeId;
+	/**pos餐桌区域id*/
+	@Excel(name = "pos餐桌区域id", width = 15)
+    @ApiModelProperty(value = "pos餐桌区域id")
+    private java.lang.String posRegionId;
+	/**座位数*/
+	@Excel(name = "座位数", width = 15)
+    @ApiModelProperty(value = "座位数")
+    private java.lang.Integer num;
+	/**餐桌序号*/
+	@Excel(name = "餐桌序号", width = 15)
+    @ApiModelProperty(value = "餐桌序号")
+    private java.lang.String tableNo;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private java.lang.Integer state;
+    /**下单时间*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "下单时间")
+    private Date orderTime;
+    /**就餐人数*/
+    @Excel(name = "就餐人数", width = 15)
+    @ApiModelProperty(value = "就餐人数")
+    private java.lang.Integer userNum;
+
+	@TableField(exist = false)
+	private  String typeName;
+
+    @TableField(exist = false)
+    private  String regionName;
+
+    @TableField(exist = false)
+    private  String tableTypeName;
+
+
+
+    @TableField(exist = false)
+    private  PosOrderGoods posOrderGoods;
+}

+ 56 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosTableType.java

@@ -0,0 +1,56 @@
+package org.jeecg.modules.pos.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: pos_table_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_table_type")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_table_type对象", description="pos_table_type")
+public class PosTableType implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**桌型名称*/
+	@Excel(name = "桌型名称", width = 15)
+    @ApiModelProperty(value = "桌型名称")
+    private java.lang.String name;
+	/**pos类型id*/
+	@Excel(name = "pos类型id", width = 15)
+    @ApiModelProperty(value = "pos类型id")
+    private java.lang.String posTypeId;
+
+    @TableField(exist = false)
+    private  String typeName;
+}

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

@@ -0,0 +1,65 @@
+package org.jeecg.modules.pos.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: pos_table_type_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_table_type_in_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_table_type_in_goods对象", description="pos_table_type_in_goods")
+public class PosTableTypeInGoods implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**pos桌型id*/
+	@Excel(name = "pos桌型id", width = 15)
+    @ApiModelProperty(value = "pos桌型id")
+    private java.lang.String posTableTypeId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private java.lang.String goodsId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private java.lang.Integer num;
+
+    @TableField(exist = false)
+    private  String goodsName;
+
+    @TableField(exist = false)
+    private  BigDecimal price;
+    @TableField(exist = false)
+    private  String tableTypeName;
+}

+ 77 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosThali.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.pos.entity;
+
+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;
+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: pos_thali
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_thali")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_thali对象", description="pos_thali")
+public class PosThali implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**套餐名称*/
+	@Excel(name = "套餐名称", width = 15)
+    @ApiModelProperty(value = "套餐名称")
+    private java.lang.String name;
+	/**套餐条形码*/
+	@Excel(name = "套餐条形码", width = 15)
+    @ApiModelProperty(value = "套餐条形码")
+    private java.lang.String barCode;
+	/**分类*/
+	@Excel(name = "分类", width = 15)
+    @ApiModelProperty(value = "分类")
+    private java.lang.String thailType;
+	/**售价*/
+	@Excel(name = "售价", width = 15)
+    @ApiModelProperty(value = "售价")
+    private java.math.BigDecimal price;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Boolean state;
+	/**是否厨打*/
+	@Excel(name = "是否厨打", width = 15)
+    @ApiModelProperty(value = "是否厨打")
+    private Boolean kitchen;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private java.lang.String remark;
+
+	@TableField(exist = false)
+	private List<PosThaliInGoods> posThaliInGoodsList;
+}

+ 71 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosThaliInGoods.java

@@ -0,0 +1,71 @@
+package org.jeecg.modules.pos.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: pos_thali_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_thali_in_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_thali_in_goods对象", description="pos_thali_in_goods")
+public class PosThaliInGoods implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**套餐id*/
+	@Excel(name = "套餐id", width = 15)
+    @ApiModelProperty(value = "套餐id")
+    private java.lang.String posThaliId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private java.lang.String goodsId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private java.lang.Integer num;
+	/**必选项*/
+	@Excel(name = "必选项", width = 15)
+    @ApiModelProperty(value = "必选项")
+    private Boolean required;
+
+	@TableField(exist = false)
+	private String name;
+
+    @TableField(exist = false)
+    private String barCode;
+    @TableField(exist = false)
+    private Integer inventory;
+    @TableField(exist = false)
+    private BigDecimal sellingPrice;
+}

+ 59 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/entity/PosType.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.pos.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: pos_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("pos_type")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="pos_type对象", description="pos_type")
+public class PosType implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private java.lang.String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private java.lang.String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private java.lang.String hotelId;
+	/**名称*/
+	@Excel(name = "名称", width = 15)
+    @ApiModelProperty(value = "名称")
+    private java.lang.String name;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private java.lang.Integer state;
+	/**线上预定*/
+	@Excel(name = "线上预定", width = 15)
+    @ApiModelProperty(value = "线上预定")
+    private java.lang.Integer online;
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosMealSection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_meal_section
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosMealSectionMapper extends BaseMapper<PosMealSection> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosOrderGoodsDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+public interface PosOrderGoodsDetailMapper extends BaseMapper<PosOrderGoodsDetail> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosOrderGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+public interface PosOrderGoodsMapper extends BaseMapper<PosOrderGoods> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosOrderGoodsPayment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_order_goods_payment
+ * @Author: jeecg-boot
+ * @Date:   2023-04-13
+ * @Version: V1.0
+ */
+public interface PosOrderGoodsPaymentMapper extends BaseMapper<PosOrderGoodsPayment> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosRegion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_region
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosRegionMapper extends BaseMapper<PosRegion> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosSellClearGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_sell_clear_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosSellClearGoodsMapper extends BaseMapper<PosSellClearGoods> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosTable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_table
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosTableMapper extends BaseMapper<PosTable> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosTableTypeInGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_table_type_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosTableTypeInGoodsMapper extends BaseMapper<PosTableTypeInGoods> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosTableType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_table_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosTableTypeMapper extends BaseMapper<PosTableType> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosThaliInGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_thali_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosThaliInGoodsMapper extends BaseMapper<PosThaliInGoods> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosThali;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_thali
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosThaliMapper extends BaseMapper<PosThali> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.pos.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.pos.entity.PosType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: pos_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-11
+ * @Version: V1.0
+ */
+public interface PosTypeMapper extends BaseMapper<PosType> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosMealSectionMapper.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.pos.mapper.PosMealSectionMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsDetailMapper.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.pos.mapper.PosOrderGoodsDetailMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsMapper.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.pos.mapper.PosOrderGoodsMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosOrderGoodsPaymentMapper.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.pos.mapper.PosOrderGoodsPaymentMapper">
+
+</mapper>

+ 0 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/pos/mapper/xml/PosRegionMapper.xml


Some files were not shown because too many files changed in this diff