gqx 2 gadi atpakaļ
vecāks
revīzija
2633f7aefc
50 mainītis faili ar 3227 papildinājumiem un 0 dzēšanām
  1. 180 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcDepositoryController.java
  2. 182 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcDepositoryInGoodsController.java
  3. 199 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcGoodsController.java
  4. 265 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcGoodsTypeController.java
  5. 375 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcStockController.java
  6. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcStockDetailController.java
  7. 192 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcSupplierController.java
  8. 260 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcSupplierInGoodsController.java
  9. 13 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/dto/SupplierInGoodsDto.java
  10. 63 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcDepository.java
  11. 64 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcDepositoryInGoods.java
  12. 104 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcGoods.java
  13. 63 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcGoodsType.java
  14. 112 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcStock.java
  15. 64 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcStockDetail.java
  16. 83 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcSupplier.java
  17. 66 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcSupplierInGoods.java
  18. 64 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/enums/StorageEnum.java
  19. 36 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcDepositoryInGoodsMapper.java
  20. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcDepositoryMapper.java
  21. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcGoodsMapper.java
  22. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcGoodsTypeMapper.java
  23. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcStockDetailMapper.java
  24. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcStockMapper.java
  25. 38 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcSupplierInGoodsMapper.java
  26. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcSupplierMapper.java
  27. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcDepositoryInGoodsMapper.xml
  28. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcDepositoryMapper.xml
  29. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcGoodsMapper.xml
  30. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcGoodsTypeMapper.xml
  31. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcStockDetailMapper.xml
  32. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcStockMapper.xml
  33. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcSupplierInGoodsMapper.xml
  34. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/xml/KcSupplierMapper.xml
  35. 23 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcDepositoryInGoodsService.java
  36. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcDepositoryService.java
  37. 18 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcGoodsService.java
  38. 45 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcGoodsTypeService.java
  39. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcStockDetailService.java
  40. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcStockService.java
  41. 28 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcSupplierInGoodsService.java
  42. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcSupplierService.java
  43. 38 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcDepositoryInGoodsServiceImpl.java
  44. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcDepositoryServiceImpl.java
  45. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcGoodsServiceImpl.java
  46. 149 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcGoodsTypeServiceImpl.java
  47. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcStockDetailServiceImpl.java
  48. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcStockServiceImpl.java
  49. 32 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcSupplierInGoodsServiceImpl.java
  50. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcSupplierServiceImpl.java

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

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

+ 182 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcDepositoryInGoodsController.java

@@ -0,0 +1,182 @@
+package org.jeecg.modules.kc.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.kc.entity.KcDepositoryInGoods;
+import org.jeecg.modules.kc.entity.KcGoods;
+import org.jeecg.modules.kc.entity.KcGoodsType;
+import org.jeecg.modules.kc.service.IKcDepositoryInGoodsService;
+
+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.kc.service.IKcGoodsService;
+import org.jeecg.modules.rooms.entity.CesGoodsUnit;
+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: kc_depository_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Api(tags="kc_depository_in_goods")
+@RestController
+@RequestMapping("/kc/kcDepositoryInGoods")
+@Slf4j
+public class KcDepositoryInGoodsController extends JeecgController<KcDepositoryInGoods, IKcDepositoryInGoodsService> {
+	@Autowired
+	private IKcDepositoryInGoodsService kcDepositoryInGoodsService;
+	@Autowired
+	private IKcGoodsService kcGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param kcDepositoryInGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "kc_depository_in_goods-分页列表查询")
+	@ApiOperation(value="kc_depository_in_goods-分页列表查询", notes="kc_depository_in_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KcDepositoryInGoods>> queryPageList(KcDepositoryInGoods kcDepositoryInGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		Page<KcDepositoryInGoods> page = new Page<KcDepositoryInGoods>(pageNo, pageSize);
+		IPage<KcDepositoryInGoods> pageList = kcDepositoryInGoodsService.depositoryInGoodsList(page, kcDepositoryInGoods.getHotelId(), kcDepositoryInGoods.getGoodsName(), kcDepositoryInGoods.getDepositoryId());
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param kcDepositoryInGoods
+	 * @return
+	 */
+	@AutoLog(value = "kc_depository_in_goods-添加")
+	@ApiOperation(value="kc_depository_in_goods-添加", notes="kc_depository_in_goods-添加")
+	//@RequiresPermissions("kc:kc_depository_in_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody KcDepositoryInGoods kcDepositoryInGoods) {
+		kcDepositoryInGoodsService.save(kcDepositoryInGoods);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param kcDepositoryInGoods
+	 * @return
+	 */
+	@AutoLog(value = "kc_depository_in_goods-编辑")
+	@ApiOperation(value="kc_depository_in_goods-编辑", notes="kc_depository_in_goods-编辑")
+	//@RequiresPermissions("kc:kc_depository_in_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody KcDepositoryInGoods kcDepositoryInGoods) {
+		kcDepositoryInGoodsService.updateById(kcDepositoryInGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "kc_depository_in_goods-通过id删除")
+	@ApiOperation(value="kc_depository_in_goods-通过id删除", notes="kc_depository_in_goods-通过id删除")
+	//@RequiresPermissions("kc:kc_depository_in_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		kcDepositoryInGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "kc_depository_in_goods-批量删除")
+	@ApiOperation(value="kc_depository_in_goods-批量删除", notes="kc_depository_in_goods-批量删除")
+	//@RequiresPermissions("kc:kc_depository_in_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.kcDepositoryInGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "kc_depository_in_goods-通过id查询")
+	@ApiOperation(value="kc_depository_in_goods-通过id查询", notes="kc_depository_in_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<KcDepositoryInGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		KcDepositoryInGoods kcDepositoryInGoods = kcDepositoryInGoodsService.getById(id);
+		if(kcDepositoryInGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(kcDepositoryInGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param kcDepositoryInGoods
+    */
+    //@RequiresPermissions("kc:kc_depository_in_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, KcDepositoryInGoods kcDepositoryInGoods) {
+        return super.exportXls(request, kcDepositoryInGoods, KcDepositoryInGoods.class, "kc_depository_in_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("kc:kc_depository_in_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KcDepositoryInGoods.class);
+    }
+
+}

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

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

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

@@ -0,0 +1,265 @@
+package org.jeecg.modules.kc.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 cn.hutool.core.util.EnumUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.Enum.ResultCode;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.kc.entity.KcGoodsType;
+import org.jeecg.modules.kc.service.IKcGoodsTypeService;
+
+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.DTO.CesStockTypeDto;
+import org.jeecg.modules.rooms.Enum.CouponEnums;
+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: kc_goods_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Api(tags="kc_goods_type")
+@RestController
+@RequestMapping("/kc/kcGoodsType")
+@Slf4j
+public class KcGoodsTypeController extends JeecgController<KcGoodsType, IKcGoodsTypeService> {
+	@Autowired
+	private IKcGoodsTypeService kcGoodsTypeService;
+
+//	/**
+//	 * 分页列表查询
+//	 *
+//	 * @param kcGoodsType
+//	 * @param pageNo
+//	 * @param pageSize
+//	 * @param req
+//	 * @return
+//	 */
+//	//@AutoLog(value = "kc_goods_type-分页列表查询")
+//	@ApiOperation(value="kc_goods_type-分页列表查询", notes="kc_goods_type-分页列表查询")
+//	@GetMapping(value = "/list")
+//	public Result<IPage<KcGoodsType>> queryPageList(KcGoodsType kcGoodsType,
+//								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+//								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+//								   HttpServletRequest req) {
+//		QueryWrapper<KcGoodsType> queryWrapper = QueryGenerator.initQueryWrapper(kcGoodsType, req.getParameterMap());
+//		Page<KcGoodsType> page = new Page<KcGoodsType>(pageNo, pageSize);
+//		IPage<KcGoodsType> pageList = kcGoodsTypeService.page(page, queryWrapper);
+//		return Result.OK(pageList);
+//	}
+
+//	/**
+//	 *   添加
+//	 *
+//	 * @param kcGoodsType
+//	 * @return
+//	 */
+//	@AutoLog(value = "kc_goods_type-添加")
+//	@ApiOperation(value="kc_goods_type-添加", notes="kc_goods_type-添加")
+//	//@RequiresPermissions("kc:kc_goods_type:add")
+//	@PostMapping(value = "/add")
+//	public Result<String> add(@RequestBody KcGoodsType kcGoodsType) {
+//		kcGoodsTypeService.save(kcGoodsType);
+//		return Result.OK("添加成功!");
+//	}
+
+//	/**
+//	 *  编辑
+//	 *
+//	 * @param kcGoodsType
+//	 * @return
+//	 */
+//	@AutoLog(value = "kc_goods_type-编辑")
+//	@ApiOperation(value="kc_goods_type-编辑", notes="kc_goods_type-编辑")
+//	//@RequiresPermissions("kc:kc_goods_type:edit")
+//	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+//	public Result<String> edit(@RequestBody KcGoodsType kcGoodsType) {
+//		kcGoodsTypeService.updateById(kcGoodsType);
+//		return Result.OK("编辑成功!");
+//	}
+//
+//	/**
+//	 *   通过id删除
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	@AutoLog(value = "kc_goods_type-通过id删除")
+//	@ApiOperation(value="kc_goods_type-通过id删除", notes="kc_goods_type-通过id删除")
+//	//@RequiresPermissions("kc:kc_goods_type:delete")
+//	@DeleteMapping(value = "/delete")
+//	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+//		kcGoodsTypeService.removeById(id);
+//		return Result.OK("删除成功!");
+//	}
+
+//	/**
+//	 *  批量删除
+//	 *
+//	 * @param ids
+//	 * @return
+//	 */
+//	@AutoLog(value = "kc_goods_type-批量删除")
+//	@ApiOperation(value="kc_goods_type-批量删除", notes="kc_goods_type-批量删除")
+//	//@RequiresPermissions("kc:kc_goods_type:deleteBatch")
+//	@DeleteMapping(value = "/deleteBatch")
+//	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+//		this.kcGoodsTypeService.removeByIds(Arrays.asList(ids.split(",")));
+//		return Result.OK("批量删除成功!");
+//	}
+
+//	/**
+//	 * 通过id查询
+//	 *
+//	 * @param id
+//	 * @return
+//	 */
+//	//@AutoLog(value = "kc_goods_type-通过id查询")
+//	@ApiOperation(value="kc_goods_type-通过id查询", notes="kc_goods_type-通过id查询")
+//	@GetMapping(value = "/queryById")
+//	public Result<KcGoodsType> queryById(@RequestParam(name="id",required=true) String id) {
+//		KcGoodsType kcGoodsType = kcGoodsTypeService.getById(id);
+//		if(kcGoodsType==null) {
+//			return Result.error("未找到对应数据");
+//		}
+//		return Result.OK(kcGoodsType);
+//	}
+//
+//    /**
+//    * 导出excel
+//    *
+//    * @param request
+//    * @param kcGoodsType
+//    */
+//    //@RequiresPermissions("kc:kc_goods_type:exportXls")
+//    @RequestMapping(value = "/exportXls")
+//    public ModelAndView exportXls(HttpServletRequest request, KcGoodsType kcGoodsType) {
+//        return super.exportXls(request, kcGoodsType, KcGoodsType.class, "kc_goods_type");
+//    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("kc:kc_goods_type:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KcGoodsType.class);
+    }
+
+	 @ApiOperation(value="分类查询", notes="分类查询")
+	 @GetMapping(value = "/tree")
+	 public Result tree(@RequestParam String hotelId){
+		 if(StringUtils.isBlank(hotelId)){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 try{
+			 return kcGoodsTypeService.tree(hotelId);
+		 }catch (Exception e){
+			 return Result.error(e.getMessage());
+		 }
+	 }
+
+	 @ApiOperation(value="顶级分类查询", notes="分类查询")
+	 @GetMapping(value = "/getTopTypes")
+	 public Result getTopTypes(@RequestParam String hotelId){
+		 if(StringUtils.isBlank(hotelId)){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 try{
+			 return kcGoodsTypeService.getTopTypes(hotelId);
+		 }catch (Exception e){
+			 return Result.error(e.getMessage());
+		 }
+	 }
+
+	 @ApiOperation(value="分类创建", notes="分类创建")
+	 @PostMapping(value = "/create")
+	 public Result create(@RequestBody KcGoodsType dto){
+		 if(StringUtils.isBlank(dto.getHotelId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 if(StringUtils.isBlank(dto.getName())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 if(StringUtils.isBlank(dto.getParentId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 try{
+			 return kcGoodsTypeService.create(dto);
+		 }catch (Exception e){
+			 return Result.error(e.getMessage());
+		 }
+	 }
+
+
+	 @ApiOperation(value="分类修改", notes="分类修改")
+	 @PutMapping(value = "/modify")
+	 public Result modify(@RequestBody KcGoodsType dto){
+		 if(StringUtils.isBlank(dto.getId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 if(StringUtils.isBlank(dto.getHotelId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 if(StringUtils.isBlank(dto.getName())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 if(StringUtils.isBlank(dto.getParentId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 try{
+			 return kcGoodsTypeService.modify(dto);
+		 }catch (Exception e){
+			 return Result.error(e.getMessage());
+		 }
+	 }
+
+
+	 @ApiOperation(value="分类删除", notes="分类删除")
+	 @DeleteMapping(value = "/delete")
+	 public Result delete(KcGoodsType dto) {
+		 if(StringUtils.isBlank(dto.getId())){
+			 return Result.error(ResultCode.PARAM_MISS);
+		 }
+		 try{
+			 return kcGoodsTypeService.delete(dto);
+		 }catch (Exception e){
+			 return Result.error(e.getMessage());
+		 }
+	 }
+}

+ 375 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcStockController.java

@@ -0,0 +1,375 @@
+package org.jeecg.modules.kc.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 cn.hutool.core.date.DateTime;
+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.system.vo.DictModel;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.kc.entity.*;
+import org.jeecg.modules.kc.enums.StorageEnum;
+import org.jeecg.modules.kc.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.pos.entity.PosType;
+import org.jeecg.modules.rooms.entity.CesGoodsUnit;
+import org.jeecg.modules.rooms.service.CesGoodsUnitServiceImpl;
+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: kc_stock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Api(tags="kc_stock")
+@RestController
+@RequestMapping("/kc/kcStock")
+@Slf4j
+public class KcStockController extends JeecgController<KcStock, IKcStockService> {
+	@Autowired
+	private IKcStockService kcStockService;
+@Autowired
+private IKcSupplierInGoodsService kcSupplierInGoodsService;
+@Autowired
+private IKcGoodsService kcGoodsService;
+@Autowired
+private CesGoodsUnitServiceImpl cesGoodsUnitService;
+@Autowired
+private IKcDepositoryService kcDepositoryService;
+@Autowired
+private IKcSupplierService kcSupplierService;
+@Autowired
+private IKcStockDetailService kcStockDetailService;
+@Autowired
+private  IKcDepositoryInGoodsService kcDepositoryInGoodsService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param kcStock
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "kc_stock-分页列表查询")
+	@ApiOperation(value="kc_stock-分页列表查询", notes="kc_stock-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KcStock>> queryPageList(KcStock kcStock,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<KcStock> queryWrapper = QueryGenerator.initQueryWrapper(kcStock, req.getParameterMap());
+		Page<KcStock> page = new Page<KcStock>(pageNo, pageSize);
+		IPage<KcStock> pageList = kcStockService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			KcDepository kcDepository = kcDepositoryService.getById(item.getDepositoryId());
+			if (kcDepository != null) {
+				item.setDepositoryName(kcDepository.getName());
+			}
+			KcSupplier kcSupplier = kcSupplierService.getById(item.getSupplierId());
+			if (kcSupplier != null) {
+				item.setSupplierName(kcSupplier.getName());
+			}
+			if (item.getType().equals(2)) {
+				StorageEnum storageEnum = StorageEnum.val(item.getStockType());
+				if (storageEnum != null) {
+					item.setStockTypeName(storageEnum.getTitle());
+				}
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 入库类型列表
+	  * @return
+	  */
+	 @ApiOperation(value="入库类型列表", notes="入库类型列表")
+	 @GetMapping(value = "/storageTypeList")
+	 public Result<List<DictModel>> storageTypeList() {
+		 return Result.OK(StorageEnum.getDictList());
+	 }
+
+	 /**
+	  * 生成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 kcStock
+	 * @return
+	 */
+	@AutoLog(value = "出入库添加")
+	@ApiOperation(value="出入库添加", notes="出入库添加")
+	//@RequiresPermissions("kc:kc_stock:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody KcStock kcStock) {
+		if (ObjectUtils.isEmpty(kcStock.getStockDetailList())) {
+			return Result.error("请先选择商品");
+		}
+		kcStock.setTenantId(TokenUtils.currentTenantId());
+		kcStock.setStatus(0);
+		String prefix = "CK";
+		if (kcStock.getType().equals(2)) {
+			prefix = "RK";
+		} else if (kcStock.getType().equals(3)) {
+			prefix = "PD";
+		}
+		kcStock.setCode(randomNumber(prefix));
+		LoginUser user = TokenUtils.getAuthUser();
+		kcStock.setCreateAt(user.getRealname());
+		kcStock.setCreateTime(DateTime.now());
+		String stockInfo = "";
+		for (KcStockDetail kcStockDetail : kcStock.getStockDetailList()) {
+			KcSupplierInGoods kcSupplierInGoods = kcSupplierInGoodsService.getById(kcStockDetail.getSupplierInGoodsId());
+			if (kcSupplierInGoods != null) {
+				KcGoods kcGoods = kcGoodsService.getById(kcSupplierInGoods.getGoodsId());
+				if (kcGoods != null) {
+					kcStockDetail.setKcGoods(kcGoods);
+					CesGoodsUnit cesGoodsUnit = cesGoodsUnitService.getById(kcGoods.getGoodUnit());
+					if (cesGoodsUnit != null) {
+						stockInfo += kcGoods.getName() + kcStockDetail.getNum() + cesGoodsUnit.getName() + ",";
+					}
+				}
+			}
+		}
+		kcStock.setStockInfo(stockInfo);
+		kcStockService.save(kcStock);
+
+		for (KcStockDetail kcStockDetail : kcStock.getStockDetailList()) {
+			kcStockDetail.setHotelId(kcStock.getHotelId());
+			kcStockDetail.setTenantId(TokenUtils.currentTenantId());
+			kcStockDetail.setStockId(kcStock.getCode());
+		}
+		kcStockDetailService.saveBatch(kcStock.getStockDetailList());
+
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  * 出入库审核
+	  * @param kcStock
+	  * @return
+	  */
+	 @ApiOperation(value="审核", notes="审核")
+	 @PostMapping(value = "/audit")
+	 public Result<String> audit(@RequestBody KcStock kcStock) {
+		 kcStockService.updateById(kcStock);
+		 if (kcStock.getStatus().equals(1)) {
+			 if (kcStock.getType().equals(2)) {
+				 LambdaQueryWrapper<KcStockDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				 lambdaQueryWrapper.eq(KcStockDetail::getStockId, kcStock.getCode());
+				 List<KcStockDetail> stockDetailList = kcStockDetailService.list(lambdaQueryWrapper);
+				 if (ObjectUtils.isNotEmpty(stockDetailList)) {
+					 for (KcStockDetail kcStockDetail : stockDetailList) {
+						 if (kcStockDetail.getKcGoods() != null) {
+							 LambdaQueryWrapper<KcDepositoryInGoods> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+							 lambdaQueryWrapper2.eq(KcDepositoryInGoods::getDepositoryId, kcStock.getDepositoryId());
+							 lambdaQueryWrapper2.eq(KcDepositoryInGoods::getGoodsId, kcStockDetail.getKcGoods().getId());
+							 KcDepositoryInGoods kcDepositoryInGoods = kcDepositoryInGoodsService.getOne(lambdaQueryWrapper2);
+							 if (kcDepositoryInGoods != null) {
+								 kcDepositoryInGoods.setNum(kcDepositoryInGoods.getNum() + kcStockDetail.getNum());
+							 } else {
+								 kcDepositoryInGoods = new KcDepositoryInGoods();
+								 kcDepositoryInGoods.setTenantId(kcStock.getTenantId());
+								 kcDepositoryInGoods.setHotelId(kcStock.getHotelId());
+								 kcDepositoryInGoods.setDepositoryId(kcStock.getDepositoryId());
+								 kcDepositoryInGoods.setGoodsId(kcStockDetail.getKcGoods().getId());
+								 kcDepositoryInGoods.setNum(kcStockDetail.getNum());
+							 }
+							 kcDepositoryInGoodsService.saveOrUpdate(kcDepositoryInGoods);
+						 }
+					 }
+				 }
+			 } else if (kcStock.getType().equals(1)) {
+				 LambdaQueryWrapper<KcStockDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+				 lambdaQueryWrapper.eq(KcStockDetail::getStockId, kcStock.getCode());
+				 List<KcStockDetail> stockDetailList = kcStockDetailService.list(lambdaQueryWrapper);
+				 if (ObjectUtils.isNotEmpty(stockDetailList)) {
+					 for (KcStockDetail kcStockDetail : stockDetailList) {
+						 if (kcStockDetail.getKcGoods() != null) {
+							 LambdaQueryWrapper<KcDepositoryInGoods> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+							 lambdaQueryWrapper2.eq(KcDepositoryInGoods::getDepositoryId, kcStock.getDepositoryId());
+							 lambdaQueryWrapper2.eq(KcDepositoryInGoods::getGoodsId, kcStockDetail.getKcGoods().getId());
+							 KcDepositoryInGoods kcDepositoryInGoods = kcDepositoryInGoodsService.getOne(lambdaQueryWrapper2);
+							 if (kcDepositoryInGoods != null) {
+								 Integer num = kcDepositoryInGoods.getNum() - kcStockDetail.getNum();
+								 if (num < 0) num = 0;
+								 kcDepositoryInGoods.setNum(num);
+								 kcDepositoryInGoodsService.updateById(kcDepositoryInGoods);
+							 }
+						 }
+					 }
+				 }
+			 }
+		 }
+		 return Result.OK("审核成功!");
+	 }
+
+	/**
+	 *  编辑
+	 *
+	 * @param kcStock
+	 * @return
+	 */
+	@AutoLog(value = "kc_stock-编辑")
+	@ApiOperation(value="kc_stock-编辑", notes="kc_stock-编辑")
+	//@RequiresPermissions("kc:kc_stock:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody KcStock kcStock) {
+		if (ObjectUtils.isEmpty(kcStock.getStockDetailList())) {
+			return Result.error("请先选择商品");
+		}
+		String stockInfo = "";
+		for (KcStockDetail kcStockDetail : kcStock.getStockDetailList()) {
+			KcSupplierInGoods kcSupplierInGoods = kcSupplierInGoodsService.getById(kcStockDetail.getSupplierInGoodsId());
+			if (kcSupplierInGoods != null) {
+				KcGoods kcGoods = kcGoodsService.getById(kcSupplierInGoods.getGoodsId());
+				if (kcGoods != null) {
+					kcStockDetail.setKcGoods(kcGoods);
+					CesGoodsUnit cesGoodsUnit = cesGoodsUnitService.getById(kcGoods.getGoodUnit());
+					if (cesGoodsUnit != null) {
+						stockInfo += kcGoods.getName() + kcStockDetail.getNum() + cesGoodsUnit.getName() + ",";
+					}
+				}
+			}
+		}
+		kcStock.setStockInfo(stockInfo);
+		kcStockService.updateById(kcStock);
+
+		LambdaQueryWrapper<KcStockDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(KcStockDetail::getStockId, kcStock.getCode());
+		kcStockDetailService.remove(lambdaQueryWrapper);
+
+		for (KcStockDetail kcStockDetail : kcStock.getStockDetailList()) {
+			kcStockDetail.setHotelId(kcStock.getHotelId());
+			kcStockDetail.setTenantId(TokenUtils.currentTenantId());
+			kcStockDetail.setStockId(kcStock.getCode());
+		}
+		kcStockDetailService.saveBatch(kcStock.getStockDetailList());
+
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "kc_stock-通过id删除")
+	@ApiOperation(value="kc_stock-通过id删除", notes="kc_stock-通过id删除")
+	//@RequiresPermissions("kc:kc_stock:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		KcStock kcStock = kcStockService.getById(id);
+		if (kcStock.getStatus().equals(1)) {
+			return Result.error("审核通过不能删除");
+		}
+		LambdaQueryWrapper<KcStockDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(KcStockDetail::getStockId, kcStock.getCode());
+		kcStockDetailService.remove(lambdaQueryWrapper);
+		kcStockService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "kc_stock-批量删除")
+	@ApiOperation(value="kc_stock-批量删除", notes="kc_stock-批量删除")
+	//@RequiresPermissions("kc:kc_stock:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.kcStockService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "kc_stock-通过id查询")
+	@ApiOperation(value="kc_stock-通过id查询", notes="kc_stock-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<KcStock> queryById(@RequestParam(name="id",required=true) String id) {
+		KcStock kcStock = kcStockService.getById(id);
+		if(kcStock==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(kcStock);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param kcStock
+    */
+    //@RequiresPermissions("kc:kc_stock:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, KcStock kcStock) {
+        return super.exportXls(request, kcStock, KcStock.class, "kc_stock");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("kc:kc_stock:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KcStock.class);
+    }
+
+}

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

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

+ 192 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcSupplierController.java

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

+ 260 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/controller/KcSupplierInGoodsController.java

@@ -0,0 +1,260 @@
+package org.jeecg.modules.kc.controller;
+
+import java.math.BigDecimal;
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.kc.dto.SupplierInGoodsDto;
+import org.jeecg.modules.kc.entity.KcGoods;
+import org.jeecg.modules.kc.entity.KcGoodsType;
+import org.jeecg.modules.kc.entity.KcSupplier;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+import org.jeecg.modules.kc.service.IKcGoodsService;
+import org.jeecg.modules.kc.service.IKcGoodsTypeService;
+import org.jeecg.modules.kc.service.IKcSupplierInGoodsService;
+
+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.CesGoodsUnit;
+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: kc_supplier_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Api(tags="kc_supplier_in_goods")
+@RestController
+@RequestMapping("/kc/kcSupplierInGoods")
+@Slf4j
+public class KcSupplierInGoodsController extends JeecgController<KcSupplierInGoods, IKcSupplierInGoodsService> {
+	@Autowired
+	private IKcSupplierInGoodsService kcSupplierInGoodsService;
+	@Autowired
+	private IKcGoodsService kcGoodsService;
+	@Autowired
+	private IKcGoodsTypeService kcGoodsTypeService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param kcSupplierInGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "kc_supplier_in_goods-分页列表查询")
+	@ApiOperation(value="kc_supplier_in_goods-分页列表查询", notes="kc_supplier_in_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<KcSupplierInGoods>> queryPageList(KcSupplierInGoods kcSupplierInGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		Page<KcSupplierInGoods> page = new Page<KcSupplierInGoods>(pageNo, pageSize);
+		IPage<KcSupplierInGoods> pageList = kcSupplierInGoodsService.supplierInGoodsList(page, kcSupplierInGoods.getHotelId(), kcSupplierInGoods.getGoodsName(), kcSupplierInGoods.getGoodsTypeId(), kcSupplierInGoods.getSupplierId());
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 供货/待供货商品分页列表查询
+	  * @param kcGoods
+	  * @param pageNo
+	  * @param pageSize
+	  * @param supplierId 供应商id
+	  * @param inGoods 是否供货商品
+	  * @param req
+	  * @return
+	  */
+	 //@AutoLog(value = "kc_supplier_in_goods-分页列表查询")
+	 @ApiOperation(value="kc_supplier_in_goods-分页列表查询", notes="kc_supplier_in_goods-分页列表查询")
+	 @GetMapping(value = "/goodsList")
+	 public Result<IPage<KcGoods>> goodsList(KcGoods kcGoods,
+														   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+											 @RequestParam(name="supplierId",required = true) String supplierId,
+											 @RequestParam(name="inGoods",required = true) @JsonFormat() Boolean inGoods,
+														   HttpServletRequest req) {
+		 LambdaQueryWrapper<KcGoods> queryWrapper = QueryGenerator.initQueryWrapper(kcGoods, req.getParameterMap()).lambda();
+		 if (ObjectUtils.isEmpty(supplierId)) {
+			 return Result.error("请传入供应商id");
+		 }
+		 if (inGoods) {
+			 queryWrapper.exists("select 1 from kc_supplier_in_goods where goods_id=kc_goods.id and supplier_id=" + supplierId);
+		 } else {
+			 queryWrapper.notExists("select 1 from kc_supplier_in_goods where goods_id=kc_goods.id and supplier_id=" + supplierId);
+		 }
+		 Page<KcGoods> page = new Page<KcGoods>(pageNo, pageSize);
+		 IPage<KcGoods> pageList = kcGoodsService.page(page, queryWrapper);
+		 pageList.getRecords().forEach(item -> {
+			 KcGoodsType kcGoodsType = kcGoodsTypeService.getById(item.getGoodType());
+			 if (kcGoodsType != null) {
+				 item.setGoodTypeName(kcGoodsType.getName());
+			 }
+			 LambdaQueryWrapper<KcSupplierInGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			 lambdaQueryWrapper.eq(KcSupplierInGoods::getSupplierId, supplierId);
+			 lambdaQueryWrapper.eq(KcSupplierInGoods::getGoodsId, item.getId());
+			 KcSupplierInGoods kcSupplierInGoods = kcSupplierInGoodsService.getOne(lambdaQueryWrapper);
+			 if (kcSupplierInGoods != null) {
+				 item.setSupplierInGoodsId(kcSupplierInGoods.getId());
+			 }
+		 });
+		 return Result.OK(pageList);
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param dto
+	 * @return
+	 */
+	@AutoLog(value = "kc_supplier_in_goods-添加")
+	@ApiOperation(value="kc_supplier_in_goods-添加", notes="kc_supplier_in_goods-添加")
+	//@RequiresPermissions("kc:kc_supplier_in_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody SupplierInGoodsDto dto) {
+		if (ObjectUtils.isEmpty(dto.getGoodsIds())) {
+			return Result.error("请先选择商品");
+		}
+		List<KcSupplierInGoods> list = new ArrayList<>();
+		for (String goodsId : dto.getGoodsIds()) {
+			LambdaQueryWrapper<KcSupplierInGoods> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(KcSupplierInGoods::getGoodsId, goodsId);
+			lambdaQueryWrapper.eq(KcSupplierInGoods::getSupplierId, dto.getSupplierId());
+			Long count = kcSupplierInGoodsService.count(lambdaQueryWrapper);
+			if (count <= 0) {
+				KcSupplierInGoods kcSupplierInGoods = new KcSupplierInGoods();
+				kcSupplierInGoods.setTenantId(TokenUtils.currentTenantId());
+				kcSupplierInGoods.setHotelId(dto.getHotelId());
+				kcSupplierInGoods.setGoodsId(goodsId);
+				kcSupplierInGoods.setPrice(BigDecimal.ZERO);
+				kcSupplierInGoods.setSupplierId(dto.getSupplierId());
+				list.add(kcSupplierInGoods);
+			}
+		}
+		kcSupplierInGoodsService.saveBatch(list);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param kcSupplierInGoods
+	 * @return
+	 */
+	@AutoLog(value = "kc_supplier_in_goods-编辑")
+	@ApiOperation(value="kc_supplier_in_goods-编辑", notes="kc_supplier_in_goods-编辑")
+	//@RequiresPermissions("kc:kc_supplier_in_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody KcSupplierInGoods kcSupplierInGoods) {
+		kcSupplierInGoodsService.updateById(kcSupplierInGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "kc_supplier_in_goods-通过id删除")
+	@ApiOperation(value="kc_supplier_in_goods-通过id删除", notes="kc_supplier_in_goods-通过id删除")
+	//@RequiresPermissions("kc:kc_supplier_in_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		kcSupplierInGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "kc_supplier_in_goods-批量删除")
+	@ApiOperation(value="kc_supplier_in_goods-批量删除", notes="kc_supplier_in_goods-批量删除")
+	//@RequiresPermissions("kc:kc_supplier_in_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.kcSupplierInGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "kc_supplier_in_goods-通过id查询")
+	@ApiOperation(value="kc_supplier_in_goods-通过id查询", notes="kc_supplier_in_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<KcSupplierInGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		KcSupplierInGoods kcSupplierInGoods = kcSupplierInGoodsService.getById(id);
+		if(kcSupplierInGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(kcSupplierInGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param kcSupplierInGoods
+    */
+    //@RequiresPermissions("kc:kc_supplier_in_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, KcSupplierInGoods kcSupplierInGoods) {
+        return super.exportXls(request, kcSupplierInGoods, KcSupplierInGoods.class, "kc_supplier_in_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("kc:kc_supplier_in_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, KcSupplierInGoods.class);
+    }
+
+}

+ 13 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/dto/SupplierInGoodsDto.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.kc.dto;
+
+import lombok.Data;
+import org.jeecg.modules.fw.entity.FwRoomLock;
+
+import java.util.List;
+
+@Data
+public class SupplierInGoodsDto {
+    private List<String> goodsIds;
+    private String hotelId;
+    private String supplierId;
+}

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

@@ -0,0 +1,63 @@
+package org.jeecg.modules.kc.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: kc_depository
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_depository")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_depository对象", description="kc_depository")
+public class KcDepository implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**仓库名称*/
+	@Excel(name = "仓库名称", width = 15)
+    @ApiModelProperty(value = "仓库名称")
+    private String name;
+	/**仓库地址*/
+	@Excel(name = "仓库地址", width = 15)
+    @ApiModelProperty(value = "仓库地址")
+    private String address;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remark;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer state;
+}

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

@@ -0,0 +1,64 @@
+package org.jeecg.modules.kc.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: kc_depository_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_depository_in_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_depository_in_goods对象", description="kc_depository_in_goods")
+public class KcDepositoryInGoods 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 depositoryId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+	/**总数*/
+	@Excel(name = "总数", width = 15)
+    @ApiModelProperty(value = "总数")
+    private Integer num;
+
+	@TableField(exist = false)
+	private String goodsName;
+	@TableField(exist = false)
+	private Integer stockWarning;
+	@TableField(exist = false)
+	private String goodsUnitName;
+}

+ 104 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcGoods.java

@@ -0,0 +1,104 @@
+package org.jeecg.modules.kc.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: kc_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_goods对象", description="kc_goods")
+public class KcGoods 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;
+	/**酒店ID*/
+	@Excel(name = "酒店ID", width = 15)
+    @ApiModelProperty(value = "酒店ID")
+    private String hotelId;
+	/**商品名称*/
+	@Excel(name = "商品名称", width = 15)
+    @ApiModelProperty(value = "商品名称")
+    private String name;
+	/**商品分类Id*/
+	@Excel(name = "商品分类Id", width = 15)
+    @ApiModelProperty(value = "商品分类Id")
+    private String goodType;
+	/**商品单位*/
+	@Excel(name = "商品单位", width = 15)
+    @ApiModelProperty(value = "商品单位")
+    private String goodUnit;
+	/**条码*/
+	@Excel(name = "条码", width = 15)
+    @ApiModelProperty(value = "条码")
+    private String barCode;
+	/**商品规格*/
+	@Excel(name = "商品规格", width = 15)
+    @ApiModelProperty(value = "商品规格")
+    private String spec;
+	/**售卖周期*/
+	@Excel(name = "售卖周期", width = 15)
+    @ApiModelProperty(value = "售卖周期")
+    private Integer sellDay;
+	/**采购最高价格*/
+	@Excel(name = "采购最高价格", width = 15)
+    @ApiModelProperty(value = "采购最高价格")
+    private BigDecimal maxPrice;
+	/**成本价*/
+	@Excel(name = "成本价", width = 15)
+    @ApiModelProperty(value = "成本价")
+    private BigDecimal costPrice;
+	/**最高库存*/
+	@Excel(name = "最高库存", width = 15)
+    @ApiModelProperty(value = "最高库存")
+    private Integer maxSotck;
+	/**最低库存*/
+	@Excel(name = "最低库存", width = 15)
+    @ApiModelProperty(value = "最低库存")
+    private Integer minSotck;
+	/**库存预警数*/
+	@Excel(name = "库存预警数", width = 15)
+    @ApiModelProperty(value = "库存预警数")
+    private Integer stockWarning;
+	/**是否启用*/
+	@Excel(name = "是否启用", width = 15)
+    @ApiModelProperty(value = "是否启用")
+    private Boolean isEnable;
+
+	@TableField(exist = false)
+    @ApiModelProperty(value = "单位名称")
+	private String goodsUnitName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "分类名称")
+    private String goodTypeName;
+
+    @TableField(exist = false)
+    private String supplierInGoodsId;
+}

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

@@ -0,0 +1,63 @@
+package org.jeecg.modules.kc.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: kc_goods_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_goods_type")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_goods_type对象", description="kc_goods_type")
+public class KcGoodsType 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;
+	/**酒店ID*/
+	@Excel(name = "酒店ID", width = 15)
+    @ApiModelProperty(value = "酒店ID")
+    private String hotelId;
+	/**分类名称*/
+	@Excel(name = "分类名称", width = 15)
+    @ApiModelProperty(value = "分类名称")
+    private String name;
+	/**上级ID*/
+	@Excel(name = "上级ID", width = 15)
+    @ApiModelProperty(value = "上级ID")
+    private String parentId;
+	/**是否启用*/
+	@Excel(name = "是否启用", width = 15)
+    @ApiModelProperty(value = "是否启用")
+    private Boolean state;
+	/**逻辑删除字段*/
+	@Excel(name = "逻辑删除字段", width = 15)
+    @ApiModelProperty(value = "逻辑删除字段")
+    private Boolean invalid;
+}

+ 112 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcStock.java

@@ -0,0 +1,112 @@
+package org.jeecg.modules.kc.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: kc_stock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_stock")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_stock对象", description="kc_stock")
+public class KcStock 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 depositoryId;
+	/**类型 1出库 2入库 3盘点*/
+	@Excel(name = "类型 1出库 2入库 3盘点", width = 15)
+    @ApiModelProperty(value = "类型 1出库 2入库 3盘点")
+    private Integer type;
+	/**出入库类型*/
+	@Excel(name = "出入库类型", width = 15)
+    @ApiModelProperty(value = "出入库类型")
+    private Integer stockType;
+	/**供应商id*/
+	@Excel(name = "供应商id", width = 15)
+    @ApiModelProperty(value = "供应商id")
+    private String supplierId;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+	/**入库内容*/
+	@Excel(name = "入库内容", width = 15)
+    @ApiModelProperty(value = "入库内容")
+    private String stockInfo;
+	/**单号*/
+	@Excel(name = "单号", width = 15)
+    @ApiModelProperty(value = "单号")
+    private String code;
+	/**制单人*/
+	@Excel(name = "制单人", width = 15)
+    @ApiModelProperty(value = "制单人")
+    private String createAt;
+	/**审核人*/
+	@Excel(name = "审核人", width = 15)
+    @ApiModelProperty(value = "审核人")
+    private String verifyAt;
+	/**审核时间*/
+	@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 verifyTime;
+	/**审核备注*/
+	@Excel(name = "审核备注", width = 15)
+    @ApiModelProperty(value = "审核备注")
+    private String verifyRemarks;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+	@TableField(exist = false)
+	private List<KcStockDetail> stockDetailList;
+
+
+    @TableField(exist = false)
+    private String depositoryName;
+    @TableField(exist = false)
+    private String stockTypeName;
+    @TableField(exist = false)
+    private String supplierName;
+}

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

@@ -0,0 +1,64 @@
+package org.jeecg.modules.kc.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: kc_stock_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_stock_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_stock_detail对象", description="kc_stock_detail")
+public class KcStockDetail 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 stockId;
+	/**供货商品id*/
+	@Excel(name = "供货商品id", width = 15)
+    @ApiModelProperty(value = "供货商品id")
+    private String supplierInGoodsId;
+	/**成本价*/
+	@Excel(name = "成本价", width = 15)
+    @ApiModelProperty(value = "成本价")
+    private BigDecimal price;
+	/**出入库数量*/
+	@Excel(name = "出入库数量", width = 15)
+    @ApiModelProperty(value = "出入库数量")
+    private Integer num;
+
+    @TableField(exist = false)
+    private KcGoods kcGoods;
+}

+ 83 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcSupplier.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.kc.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: kc_supplier
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_supplier")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_supplier对象", description="kc_supplier")
+public class KcSupplier implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "id")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**名称*/
+	@Excel(name = "名称", width = 15)
+    @ApiModelProperty(value = "名称")
+    private String name;
+	/**地址*/
+	@Excel(name = "地址", width = 15)
+    @ApiModelProperty(value = "地址")
+    private String address;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer state;
+	/**姓名*/
+	@Excel(name = "姓名", width = 15)
+    @ApiModelProperty(value = "姓名")
+    private String contactName;
+	/**手机号*/
+	@Excel(name = "手机号", width = 15)
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+	/**开户名称*/
+	@Excel(name = "开户名称", width = 15)
+    @ApiModelProperty(value = "开户名称")
+    private String accountName;
+	/**开户银行*/
+	@Excel(name = "开户银行", width = 15)
+    @ApiModelProperty(value = "开户银行")
+    private String accountBank;
+	/**银行账号*/
+	@Excel(name = "银行账号", width = 15)
+    @ApiModelProperty(value = "银行账号")
+    private String bankCardNo;
+	/**发票抬头*/
+	@Excel(name = "发票抬头", width = 15)
+    @ApiModelProperty(value = "发票抬头")
+    private String invoiceTitle;
+}

+ 66 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/entity/KcSupplierInGoods.java

@@ -0,0 +1,66 @@
+package org.jeecg.modules.kc.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: kc_supplier_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Data
+@TableName("kc_supplier_in_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="kc_supplier_in_goods对象", description="kc_supplier_in_goods")
+public class KcSupplierInGoods 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 supplierId;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+	/**供应价*/
+	@Excel(name = "供应价", width = 15)
+    @ApiModelProperty(value = "供应价")
+    private BigDecimal price;
+
+	@TableField(exist = false)
+	private String goodsName;
+
+    @TableField(exist = false)
+    private String goodsTypeId;
+
+    @TableField(exist = false)
+    private String goodsTypeName;
+}

+ 64 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/enums/StorageEnum.java

@@ -0,0 +1,64 @@
+package org.jeecg.modules.kc.enums;
+
+import org.jeecg.common.system.annotation.EnumDict;
+import org.jeecg.common.system.vo.DictModel;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@EnumDict("storageEnum")
+public enum StorageEnum {
+
+    buy(1, "采购入库"),
+    saleReturn(2, "销售退货"),
+    profit(3, "盘盈入库"),
+    other(4, "其他入库"),
+    allot(5, "调拨入库"),
+    assets(6, "固资入库"),
+    mallReturn(7,"商城退货入库");
+
+    Integer key;
+
+    String title;
+
+    StorageEnum(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 (StorageEnum e : StorageEnum.values()) {
+            dictModel = new DictModel();
+            dictModel.setValue(e.key.toString());
+            dictModel.setText(e.title);
+            list.add(dictModel);
+        }
+        return list;
+    }
+
+    public static StorageEnum val(Integer key) {
+        for (StorageEnum bld : values()) {
+            if (bld.key == key) {
+                return bld;
+            }
+        }
+        return null;
+    }
+
+}

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

@@ -0,0 +1,36 @@
+package org.jeecg.modules.kc.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.kc.entity.KcDepositoryInGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+
+/**
+ * @Description: kc_depository_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface KcDepositoryInGoodsMapper extends BaseMapper<KcDepositoryInGoods> {
+
+    /**
+     * 仓库库存商品列表
+     * @param page
+     * @param hotelId
+     * @param goodsName
+     * @param depositoryId
+     * @return
+     */
+    @Select("<script>select sg.*,g.name as goods_name,g.stock_warning,gt.name as goods_unit_name from kc_depository_in_goods sg inner join kc_goods g on g.id=sg.goods_id\n" +
+            "left join ces_goods_unit gt on gt.id=g.good_unit\n" +
+            "where 1=1\n" +
+            "<if test='depositoryId != null and depositoryId !=\"\"'> and sg.depository_id = #{depositoryId} </if>"+
+            "<if test='hotelId != null and hotelId !=\"\"'> and sg.hotel_id = #{hotelId} </if>"+
+            "<if test='goodsName != null and goodsName !=\"\"'> and g.name like concat('%',#{goodsName},'%') </if>"+
+            "</script>")
+    public List<KcDepositoryInGoods> depositoryInGoodsList(Page<KcDepositoryInGoods> page, String hotelId, String goodsName,String depositoryId);
+}

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

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

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

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

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

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

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

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

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

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

+ 38 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/mapper/KcSupplierInGoodsMapper.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.kc.mapper;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: kc_supplier_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface KcSupplierInGoodsMapper extends BaseMapper<KcSupplierInGoods> {
+
+    /**
+     * 供货商品
+     * @param page
+     * @param hotelId
+     * @param goodsName
+     * @param goodsTypeId
+     * @return
+     */
+    @Select("<script>select sg.*,g.name as goods_name,gt.name as goods_type_name from kc_supplier_in_goods sg inner join kc_goods g on g.id=sg.goods_id\n" +
+            "left join kc_goods_type gt on gt.id=g.good_type\n" +
+            "where 1=1\n" +
+            "<if test='supplierId != null and supplierId !=\"\"'> and sg.supplier_id = #{supplierId} </if>"+
+            "<if test='hotelId != null and hotelId !=\"\"'> and sg.hotel_id = #{hotelId} </if>"+
+            "<if test='goodsName != null and goodsName !=\"\"'> and g.name like concat('%',#{goodsName},'%') </if>"+
+            "<if test='goodsTypeId != null and goodsTypeId !=\"\"'> and gt.id = #{goodsTypeId} </if>"+
+            "</script>")
+    public List<KcSupplierInGoods> supplierInGoodsList(Page<KcSupplierInGoods> page, String hotelId, String goodsName,String goodsTypeId,String supplierId);
+}

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

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

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

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

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

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

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

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

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

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

+ 23 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcDepositoryInGoodsService.java

@@ -0,0 +1,23 @@
+package org.jeecg.modules.kc.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.kc.entity.KcDepositoryInGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: kc_depository_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcDepositoryInGoodsService extends IService<KcDepositoryInGoods> {
+    /**
+     * 仓库库存商品列表
+     * @param page
+     * @param hotelId
+     * @param goodsName
+     * @param depositoryId
+     * @return
+     */
+    public Page<KcDepositoryInGoods> depositoryInGoodsList(Page<KcDepositoryInGoods> page, String hotelId, String goodsName, String depositoryId);
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kc.service;
+
+import org.jeecg.modules.kc.entity.KcDepository;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: kc_depository
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcDepositoryService extends IService<KcDepository> {
+
+}

+ 18 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcGoodsService.java

@@ -0,0 +1,18 @@
+package org.jeecg.modules.kc.service;
+
+import cn.hutool.core.lang.tree.Tree;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.kc.entity.KcGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: kc_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcGoodsService extends IService<KcGoods> {
+
+}

+ 45 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/IKcGoodsTypeService.java

@@ -0,0 +1,45 @@
+package org.jeecg.modules.kc.service;
+
+import cn.hutool.core.lang.tree.Tree;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.kc.entity.KcGoodsType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: kc_goods_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcGoodsTypeService extends IService<KcGoodsType> {
+    /**
+     * 获取商品库存分类
+     * @param hotelId
+     * @return
+     */
+    public Result tree(String hotelId);
+
+    public List<Tree<String>> treeList(String hotelId);
+    public Result getTopTypes(String hotelId);
+    /**
+     * 创建分类
+     * @param kcGoodsType
+     * @return
+     */
+    public Result create(KcGoodsType kcGoodsType);
+    /**
+     * 修改分类
+     * @param kcGoodsType
+     * @return
+     */
+    public Result modify(KcGoodsType kcGoodsType);
+    public Result delete(KcGoodsType kcGoodsType);
+    /**
+     * 根据IDS 查询分类数据
+     * @param ids
+     * @return
+     */
+    public List<KcGoodsType> fetchByIds(List<String> ids);
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kc.service;
+
+import org.jeecg.modules.kc.entity.KcStockDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: kc_stock_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcStockDetailService extends IService<KcStockDetail> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kc.service;
+
+import org.jeecg.modules.kc.entity.KcStock;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: kc_stock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcStockService extends IService<KcStock> {
+
+}

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

@@ -0,0 +1,28 @@
+package org.jeecg.modules.kc.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: kc_supplier_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcSupplierInGoodsService extends IService<KcSupplierInGoods> {
+
+    /**
+     * 供货商品
+     * @param page
+     * @param hotelId
+     * @param goodsName
+     * @param goodsTypeId
+     * @param supplierId
+     * @return
+     */
+    public Page<KcSupplierInGoods> supplierInGoodsList(Page<KcSupplierInGoods> page, String hotelId, String goodsName, String goodsTypeId, String supplierId);
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.kc.service;
+
+import org.jeecg.modules.kc.entity.KcSupplier;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: kc_supplier
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+public interface IKcSupplierService extends IService<KcSupplier> {
+
+}

+ 38 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcDepositoryInGoodsServiceImpl.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.kc.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.kc.entity.KcDepositoryInGoods;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+import org.jeecg.modules.kc.mapper.KcDepositoryInGoodsMapper;
+import org.jeecg.modules.kc.mapper.KcSupplierInGoodsMapper;
+import org.jeecg.modules.kc.service.IKcDepositoryInGoodsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description: kc_depository_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcDepositoryInGoodsServiceImpl extends ServiceImpl<KcDepositoryInGoodsMapper, KcDepositoryInGoods> implements IKcDepositoryInGoodsService {
+    @Resource
+    private KcDepositoryInGoodsMapper kcDepositoryInGoodsMapper;
+
+    /**
+     * 仓库库存商品列表
+     * @param page
+     * @param hotelId
+     * @param goodsName
+     * @param depositoryId
+     * @return
+     */
+    public Page<KcDepositoryInGoods> depositoryInGoodsList(Page<KcDepositoryInGoods> page, String hotelId, String goodsName,String depositoryId){
+        return page.setRecords(kcDepositoryInGoodsMapper.depositoryInGoodsList(page, hotelId, goodsName,depositoryId));
+    }
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kc.service.impl;
+
+import org.jeecg.modules.kc.entity.KcDepository;
+import org.jeecg.modules.kc.mapper.KcDepositoryMapper;
+import org.jeecg.modules.kc.service.IKcDepositoryService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: kc_depository
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcDepositoryServiceImpl extends ServiceImpl<KcDepositoryMapper, KcDepository> implements IKcDepositoryService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kc.service.impl;
+
+import org.jeecg.modules.kc.entity.KcGoods;
+import org.jeecg.modules.kc.mapper.KcGoodsMapper;
+import org.jeecg.modules.kc.service.IKcGoodsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: kc_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcGoodsServiceImpl extends ServiceImpl<KcGoodsMapper, KcGoods> implements IKcGoodsService {
+
+}

+ 149 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcGoodsTypeServiceImpl.java

@@ -0,0 +1,149 @@
+package org.jeecg.modules.kc.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+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.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.kc.entity.KcGoodsType;
+import org.jeecg.modules.kc.mapper.KcGoodsTypeMapper;
+import org.jeecg.modules.kc.service.IKcGoodsTypeService;
+import org.jeecg.modules.rooms.DTO.CesStockTypeDto;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: kc_goods_type
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcGoodsTypeServiceImpl extends ServiceImpl<KcGoodsTypeMapper, KcGoodsType> implements IKcGoodsTypeService {
+    @Resource
+    private KcGoodsTypeMapper kcGoodsTypeMapper;
+    /**
+     * 获取商品库存分类
+     * @param hotelId
+     * @return
+     */
+    public Result tree(String hotelId){
+        List<TreeNode<String>> nodeList = CollUtil.newArrayList();
+        //查询数据
+        List<KcGoodsType> list = kcGoodsTypeMapper.selectList(Wrappers.<KcGoodsType>lambdaQuery()
+                .eq(KcGoodsType::getHotelId,hotelId)
+                .eq(KcGoodsType::getInvalid,false));
+        list.forEach(v -> {
+            nodeList.add(new TreeNode<>(v.getId(),v.getParentId(),v.getName(),0));
+        });
+        if(CollUtil.isEmpty(nodeList)) return Result.OK(new ArrayList<>());
+        List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");
+        return Result.OK(treeList);
+    }
+
+    public List<Tree<String>> treeList(String hotelId){
+        List<TreeNode<String>> nodeList = CollUtil.newArrayList();
+        //查询数据
+        List<KcGoodsType> list = kcGoodsTypeMapper.selectList(Wrappers.<KcGoodsType>lambdaQuery()
+                .eq(KcGoodsType::getHotelId,hotelId)
+                .eq(KcGoodsType::getInvalid,false));
+        list.forEach(v -> {
+            nodeList.add(new TreeNode<>(v.getId(),v.getParentId(),v.getName(),0));
+        });
+        if(CollUtil.isEmpty(nodeList)) return new ArrayList<>();
+        List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");
+        return treeList;
+    }
+
+
+    /**
+     * 获取顶级分类
+     * @return
+     */
+    public Result getTopTypes(String hotelId){
+        //查询数据
+        List<KcGoodsType> list = kcGoodsTypeMapper.selectList(Wrappers.<KcGoodsType>lambdaQuery()
+                .eq(KcGoodsType::getHotelId,hotelId)
+                .eq(KcGoodsType::getState,true)
+                .eq(KcGoodsType::getParentId,"0")
+                .eq(KcGoodsType::getInvalid,false));
+        return Result.OK(list);
+    }
+
+    /**
+     * 创建分类
+     * @param kcGoodsType
+     * @return
+     */
+    public Result create(KcGoodsType kcGoodsType){
+        LambdaQueryWrapper<KcGoodsType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(KcGoodsType::getName,kcGoodsType.getName());
+        queryWrapper.eq(KcGoodsType::getHotelId, kcGoodsType.getHotelId());
+        queryWrapper.eq(KcGoodsType::getInvalid,true);
+
+        KcGoodsType cesStockType = kcGoodsTypeMapper.selectOne(queryWrapper);
+        if(!ObjectUtils.isEmpty(cesStockType)) return Result.error("已有相同名称的分类!");
+
+        kcGoodsType.setInvalid(false);
+        kcGoodsTypeMapper.insert(kcGoodsType);
+        return Result.OK("保存成功!");
+    }
+
+
+    /**
+     * 修改分类
+     * @param kcGoodsType
+     * @return
+     */
+    public Result modify(KcGoodsType kcGoodsType){
+        KcGoodsType cesStockType = kcGoodsTypeMapper.selectById(kcGoodsType.getId());
+        if(ObjectUtils.isEmpty(cesStockType)) return Result.error("数据未找到!");
+
+        LambdaQueryWrapper<KcGoodsType> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.ne(KcGoodsType::getId,cesStockType.getId());
+        queryWrapper.eq(KcGoodsType::getName,cesStockType.getName());
+        queryWrapper.eq(KcGoodsType::getHotelId, cesStockType.getHotelId());
+        queryWrapper.eq(KcGoodsType::getInvalid,false);
+
+        KcGoodsType exit = kcGoodsTypeMapper.selectOne(queryWrapper);
+        if(!ObjectUtils.isEmpty(exit)) return Result.error("已有相同名称的分类!");
+        kcGoodsTypeMapper.updateById(kcGoodsType);
+        return Result.OK("修改成功!");
+    }
+
+
+    public Result delete(KcGoodsType kcGoodsType){
+        KcGoodsType cesStockType = kcGoodsTypeMapper.selectById(kcGoodsType.getId());
+        if(ObjectUtils.isEmpty(cesStockType)) return Result.error("数据未找到!");
+        cesStockType.setInvalid(true);
+        kcGoodsTypeMapper.updateById(cesStockType);
+        return Result.OK("删除成功!");
+    }
+
+
+    /**
+     * 根据IDS 查询分类数据
+     * @param ids
+     * @return
+     */
+    public List<KcGoodsType> fetchByIds(List<String> ids){
+        if(CollectionUtil.isEmpty(ids)) return new ArrayList<>();
+        List<KcGoodsType> list = kcGoodsTypeMapper.selectList(Wrappers.<KcGoodsType>lambdaQuery().eq(KcGoodsType::getInvalid,false).in(KcGoodsType::getId,ids));
+
+        return  list;
+    }
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kc.service.impl;
+
+import org.jeecg.modules.kc.entity.KcStockDetail;
+import org.jeecg.modules.kc.mapper.KcStockDetailMapper;
+import org.jeecg.modules.kc.service.IKcStockDetailService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: kc_stock_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcStockDetailServiceImpl extends ServiceImpl<KcStockDetailMapper, KcStockDetail> implements IKcStockDetailService {
+
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kc.service.impl;
+
+import org.jeecg.modules.kc.entity.KcStock;
+import org.jeecg.modules.kc.mapper.KcStockMapper;
+import org.jeecg.modules.kc.service.IKcStockService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: kc_stock
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcStockServiceImpl extends ServiceImpl<KcStockMapper, KcStock> implements IKcStockService {
+
+}

+ 32 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/kc/service/impl/KcSupplierInGoodsServiceImpl.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.kc.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.mapper.BusMarketCouponsCashUsedMapper;
+import org.jeecg.modules.kc.entity.KcSupplierInGoods;
+import org.jeecg.modules.kc.mapper.KcSupplierInGoodsMapper;
+import org.jeecg.modules.kc.service.IKcSupplierInGoodsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: kc_supplier_in_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcSupplierInGoodsServiceImpl extends ServiceImpl<KcSupplierInGoodsMapper, KcSupplierInGoods> implements IKcSupplierInGoodsService {
+
+    @Resource
+    private KcSupplierInGoodsMapper kcSupplierInGoodsMapper;
+
+    public Page<KcSupplierInGoods> supplierInGoodsList(Page<KcSupplierInGoods> page, String hotelId, String goodsName, String goodsTypeId, String supplierId){
+        return page.setRecords(kcSupplierInGoodsMapper.supplierInGoodsList(page, hotelId, goodsName,goodsTypeId,supplierId));
+    }
+}

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

@@ -0,0 +1,19 @@
+package org.jeecg.modules.kc.service.impl;
+
+import org.jeecg.modules.kc.entity.KcSupplier;
+import org.jeecg.modules.kc.mapper.KcSupplierMapper;
+import org.jeecg.modules.kc.service.IKcSupplierService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: kc_supplier
+ * @Author: jeecg-boot
+ * @Date:   2023-04-18
+ * @Version: V1.0
+ */
+@Service
+public class KcSupplierServiceImpl extends ServiceImpl<KcSupplierMapper, KcSupplier> implements IKcSupplierService {
+
+}