Browse Source

生产厂商管理 供应商管理 耗材管理导入修改

HuRongxin 3 months ago
parent
commit
2e62f41ea5
17 changed files with 1110 additions and 15 deletions
  1. 106 0
      ruoyi-admin/src/main/java/org/dromara/web/controller/ProductManufacturerController.java
  2. 106 0
      ruoyi-admin/src/main/java/org/dromara/web/controller/ProductSupplierController.java
  3. 67 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/ProductManufacturer.java
  4. 62 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/ProductSupplier.java
  5. 61 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/bo/ProductManufacturerBo.java
  6. 56 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/bo/ProductSupplierBo.java
  7. 71 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/vo/ProductManufacturerVo.java
  8. 64 0
      ruoyi-admin/src/main/java/org/dromara/web/domain/vo/ProductSupplierVo.java
  9. 16 0
      ruoyi-admin/src/main/java/org/dromara/web/mapper/ProductManufacturerMapper.java
  10. 16 0
      ruoyi-admin/src/main/java/org/dromara/web/mapper/ProductSupplierMapper.java
  11. 69 0
      ruoyi-admin/src/main/java/org/dromara/web/service/IProductManufacturerService.java
  12. 69 0
      ruoyi-admin/src/main/java/org/dromara/web/service/IProductSupplierService.java
  13. 132 0
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/ProductManufacturerServiceImpl.java
  14. 132 0
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/ProductSupplierServiceImpl.java
  15. 69 15
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/SuppliesManageServiceImpl.java
  16. 7 0
      ruoyi-admin/src/main/resources/mapper/warehouse/ProductManufacturerMapper.xml
  17. 7 0
      ruoyi-admin/src/main/resources/mapper/warehouse/ProductSupplierMapper.xml

+ 106 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/ProductManufacturerController.java

@@ -0,0 +1,106 @@
+package org.dromara.web.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.web.domain.bo.ProductManufacturerBo;
+import org.dromara.web.domain.vo.ProductManufacturerVo;
+import org.dromara.web.service.IProductManufacturerService;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 生产厂商
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/warehouse/productManufacturer")
+public class ProductManufacturerController extends BaseController {
+
+    private final IProductManufacturerService productManufacturerService;
+
+    /**
+     * 查询生产厂商列表
+     */
+    @SaCheckPermission("warehouse:productManufacturer:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductManufacturerVo> list(ProductManufacturerBo bo, PageQuery pageQuery) {
+        return productManufacturerService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出生产厂商列表
+     */
+    @SaCheckPermission("warehouse:productManufacturer:export")
+    @Log(title = "生产厂商", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductManufacturerBo bo, HttpServletResponse response) {
+        List<ProductManufacturerVo> list = productManufacturerService.queryList(bo);
+        ExcelUtil.exportExcel(list, "生产厂商", ProductManufacturerVo.class, response);
+    }
+
+    /**
+     * 获取生产厂商详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("warehouse:productManufacturer:query")
+    @GetMapping("/{id}")
+    public R<ProductManufacturerVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(productManufacturerService.queryById(id));
+    }
+
+    /**
+     * 新增生产厂商
+     */
+    @SaCheckPermission("warehouse:productManufacturer:add")
+    @Log(title = "生产厂商", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductManufacturerBo bo) {
+        return toAjax(productManufacturerService.insertByBo(bo));
+    }
+
+    /**
+     * 修改生产厂商
+     */
+    @SaCheckPermission("warehouse:productManufacturer:edit")
+    @Log(title = "生产厂商", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductManufacturerBo bo) {
+        return toAjax(productManufacturerService.updateByBo(bo));
+    }
+
+    /**
+     * 删除生产厂商
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("warehouse:productManufacturer:remove")
+    @Log(title = "生产厂商", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(productManufacturerService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 106 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/ProductSupplierController.java

@@ -0,0 +1,106 @@
+package org.dromara.web.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.web.domain.bo.ProductSupplierBo;
+import org.dromara.web.domain.vo.ProductSupplierVo;
+import org.dromara.web.service.IProductSupplierService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 供应商
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/warehouse/productSupplier")
+public class ProductSupplierController extends BaseController {
+
+    private final IProductSupplierService productSupplierService;
+
+    /**
+     * 查询供应商列表
+     */
+    @SaCheckPermission("warehouse:productSupplier:list")
+    @GetMapping("/list")
+    public TableDataInfo<ProductSupplierVo> list(ProductSupplierBo bo, PageQuery pageQuery) {
+        return productSupplierService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出供应商列表
+     */
+    @SaCheckPermission("warehouse:productSupplier:export")
+    @Log(title = "供应商", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(ProductSupplierBo bo, HttpServletResponse response) {
+        List<ProductSupplierVo> list = productSupplierService.queryList(bo);
+        ExcelUtil.exportExcel(list, "供应商", ProductSupplierVo.class, response);
+    }
+
+    /**
+     * 获取供应商详细信息
+     *
+     * @param id 主键
+     */
+    @SaCheckPermission("warehouse:productSupplier:query")
+    @GetMapping("/{id}")
+    public R<ProductSupplierVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable Long id) {
+        return R.ok(productSupplierService.queryById(id));
+    }
+
+    /**
+     * 新增供应商
+     */
+    @SaCheckPermission("warehouse:productSupplier:add")
+    @Log(title = "供应商", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody ProductSupplierBo bo) {
+        return toAjax(productSupplierService.insertByBo(bo));
+    }
+
+    /**
+     * 修改供应商
+     */
+    @SaCheckPermission("warehouse:productSupplier:edit")
+    @Log(title = "供应商", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProductSupplierBo bo) {
+        return toAjax(productSupplierService.updateByBo(bo));
+    }
+
+    /**
+     * 删除供应商
+     *
+     * @param ids 主键串
+     */
+    @SaCheckPermission("warehouse:productSupplier:remove")
+    @Log(title = "供应商", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable Long[] ids) {
+        return toAjax(productSupplierService.deleteWithValidByIds(List.of(ids), true));
+    }
+}

+ 67 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/ProductManufacturer.java

@@ -0,0 +1,67 @@
+package org.dromara.web.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 生产厂商对象 product_manufacturer
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_manufacturer")
+public class ProductManufacturer extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 租户编号
+     */
+    private String tenantId;
+
+    /**
+     * 生产厂商
+     */
+    private String name;
+
+    /**
+     * 联系人名称
+     */
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    private String address;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 62 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/ProductSupplier.java

@@ -0,0 +1,62 @@
+package org.dromara.web.domain;
+
+import org.dromara.common.tenant.core.TenantEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 供应商对象 product_supplier
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("product_supplier")
+public class ProductSupplier extends TenantEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 供应商
+     */
+    private String name;
+
+    /**
+     * 联系人名称
+     */
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    private String address;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 删除标志(0代表存在 1代表删除)
+     */
+    @TableLogic
+    private String delFlag;
+
+
+}

+ 61 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/ProductManufacturerBo.java

@@ -0,0 +1,61 @@
+package org.dromara.web.domain.bo;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.web.domain.ProductManufacturer;
+
+/**
+ * 生产厂商业务对象 product_manufacturer
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductManufacturer.class, reverseConvertGenerate = false)
+public class ProductManufacturerBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 生产厂商
+     */
+    @NotBlank(message = "生产厂商不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 租户编号
+     */
+    private String tenantId;
+
+    /**
+     * 联系人名称
+     */
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    private String address;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+
+}

+ 56 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/bo/ProductSupplierBo.java

@@ -0,0 +1,56 @@
+package org.dromara.web.domain.bo;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.web.domain.ProductSupplier;
+
+/**
+ * 供应商业务对象 product_supplier
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ProductSupplier.class, reverseConvertGenerate = false)
+public class ProductSupplierBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 供应商
+     */
+    @NotBlank(message = "供应商不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String name;
+
+    /**
+     * 联系人名称
+     */
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    private String address;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+
+}

+ 71 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/ProductManufacturerVo.java

@@ -0,0 +1,71 @@
+package org.dromara.web.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.web.domain.ProductManufacturer;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+
+/**
+ * 生产厂商视图对象 product_manufacturer
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductManufacturer.class)
+public class ProductManufacturerVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 生产厂商
+     */
+    @ExcelProperty(value = "生产厂商")
+    private String name;
+
+    /**
+     * 租户编号
+     */
+    @ExcelProperty(value = "租户id")
+    private String tenantId;
+
+    /**
+     * 联系人名称
+     */
+    @ExcelProperty(value = "联系人名称")
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    @ExcelProperty(value = "联系人电话")
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    @ExcelProperty(value = "联系人地址")
+    private String address;
+
+    /**
+     * 描述
+     */
+    @ExcelProperty(value = "描述")
+    private String description;
+
+
+}

+ 64 - 0
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/ProductSupplierVo.java

@@ -0,0 +1,64 @@
+package org.dromara.web.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.web.domain.ProductSupplier;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * 供应商视图对象 product_supplier
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ProductSupplier.class)
+public class ProductSupplierVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 供应商
+     */
+    @ExcelProperty(value = "供应商")
+    private String name;
+
+    /**
+     * 联系人名称
+     */
+    @ExcelProperty(value = "联系人名称")
+    private String contactName;
+
+    /**
+     * 联系人电话
+     */
+    @ExcelProperty(value = "联系人电话")
+    private String contactPhone;
+
+    /**
+     * 联系人地址
+     */
+    @ExcelProperty(value = "联系人地址")
+    private String address;
+
+    /**
+     * 描述
+     */
+    @ExcelProperty(value = "描述")
+    private String description;
+
+
+}

+ 16 - 0
ruoyi-admin/src/main/java/org/dromara/web/mapper/ProductManufacturerMapper.java

@@ -0,0 +1,16 @@
+package org.dromara.web.mapper;
+
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.web.domain.ProductManufacturer;
+import org.dromara.web.domain.vo.ProductManufacturerVo;
+
+/**
+ * 生产厂商Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+public interface ProductManufacturerMapper extends BaseMapperPlus<ProductManufacturer, ProductManufacturerVo> {
+
+}

+ 16 - 0
ruoyi-admin/src/main/java/org/dromara/web/mapper/ProductSupplierMapper.java

@@ -0,0 +1,16 @@
+package org.dromara.web.mapper;
+
+
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.web.domain.ProductSupplier;
+import org.dromara.web.domain.vo.ProductSupplierVo;
+
+/**
+ * 供应商Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+public interface ProductSupplierMapper extends BaseMapperPlus<ProductSupplier, ProductSupplierVo> {
+
+}

+ 69 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/IProductManufacturerService.java

@@ -0,0 +1,69 @@
+package org.dromara.web.service;
+
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.bo.ProductManufacturerBo;
+import org.dromara.web.domain.vo.ProductManufacturerVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 生产厂商Service接口
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+public interface IProductManufacturerService {
+
+    /**
+     * 查询生产厂商
+     *
+     * @param id 主键
+     * @return 生产厂商
+     */
+    ProductManufacturerVo queryById(Long id);
+
+    /**
+     * 分页查询生产厂商列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 生产厂商分页列表
+     */
+    TableDataInfo<ProductManufacturerVo> queryPageList(ProductManufacturerBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的生产厂商列表
+     *
+     * @param bo 查询条件
+     * @return 生产厂商列表
+     */
+    List<ProductManufacturerVo> queryList(ProductManufacturerBo bo);
+
+    /**
+     * 新增生产厂商
+     *
+     * @param bo 生产厂商
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductManufacturerBo bo);
+
+    /**
+     * 修改生产厂商
+     *
+     * @param bo 生产厂商
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductManufacturerBo bo);
+
+    /**
+     * 校验并批量删除生产厂商信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 69 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/IProductSupplierService.java

@@ -0,0 +1,69 @@
+package org.dromara.web.service;
+
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.bo.ProductSupplierBo;
+import org.dromara.web.domain.vo.ProductSupplierVo;
+
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 供应商Service接口
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+public interface IProductSupplierService {
+
+    /**
+     * 查询供应商
+     *
+     * @param id 主键
+     * @return 供应商
+     */
+    ProductSupplierVo queryById(Long id);
+
+    /**
+     * 分页查询供应商列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 供应商分页列表
+     */
+    TableDataInfo<ProductSupplierVo> queryPageList(ProductSupplierBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询符合条件的供应商列表
+     *
+     * @param bo 查询条件
+     * @return 供应商列表
+     */
+    List<ProductSupplierVo> queryList(ProductSupplierBo bo);
+
+    /**
+     * 新增供应商
+     *
+     * @param bo 供应商
+     * @return 是否新增成功
+     */
+    Boolean insertByBo(ProductSupplierBo bo);
+
+    /**
+     * 修改供应商
+     *
+     * @param bo 供应商
+     * @return 是否修改成功
+     */
+    Boolean updateByBo(ProductSupplierBo bo);
+
+    /**
+     * 校验并批量删除供应商信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 132 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/impl/ProductManufacturerServiceImpl.java

@@ -0,0 +1,132 @@
+package org.dromara.web.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.ProductManufacturer;
+import org.dromara.web.domain.bo.ProductManufacturerBo;
+import org.dromara.web.domain.vo.ProductManufacturerVo;
+import org.dromara.web.mapper.ProductManufacturerMapper;
+import org.dromara.web.service.IProductManufacturerService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 生产厂商Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductManufacturerServiceImpl implements IProductManufacturerService {
+
+    private final ProductManufacturerMapper baseMapper;
+
+    /**
+     * 查询生产厂商
+     *
+     * @param id 主键
+     * @return 生产厂商
+     */
+    @Override
+    public ProductManufacturerVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询生产厂商列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 生产厂商分页列表
+     */
+    @Override
+    public TableDataInfo<ProductManufacturerVo> queryPageList(ProductManufacturerBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductManufacturer> lqw = buildQueryWrapper(bo);
+        Page<ProductManufacturerVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的生产厂商列表
+     *
+     * @param bo 查询条件
+     * @return 生产厂商列表
+     */
+    @Override
+    public List<ProductManufacturerVo> queryList(ProductManufacturerBo bo) {
+        LambdaQueryWrapper<ProductManufacturer> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductManufacturer> buildQueryWrapper(ProductManufacturerBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductManufacturer> lqw = Wrappers.lambdaQuery();
+        lqw.orderByDesc(ProductManufacturer::getCreateTime);
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ProductManufacturer::getName, bo.getName());
+        return lqw;
+    }
+
+    /**
+     * 新增生产厂商
+     *
+     * @param bo 生产厂商
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductManufacturerBo bo) {
+        ProductManufacturer add = MapstructUtils.convert(bo, ProductManufacturer.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改生产厂商
+     *
+     * @param bo 生产厂商
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductManufacturerBo bo) {
+        ProductManufacturer update = MapstructUtils.convert(bo, ProductManufacturer.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductManufacturer entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除生产厂商信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 132 - 0
ruoyi-admin/src/main/java/org/dromara/web/service/impl/ProductSupplierServiceImpl.java

@@ -0,0 +1,132 @@
+package org.dromara.web.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.web.domain.ProductSupplier;
+import org.dromara.web.domain.bo.ProductSupplierBo;
+import org.dromara.web.domain.vo.ProductSupplierVo;
+import org.dromara.web.mapper.ProductSupplierMapper;
+import org.dromara.web.service.IProductSupplierService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 供应商Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-07-07
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class ProductSupplierServiceImpl implements IProductSupplierService {
+
+    private final ProductSupplierMapper baseMapper;
+
+    /**
+     * 查询供应商
+     *
+     * @param id 主键
+     * @return 供应商
+     */
+    @Override
+    public ProductSupplierVo queryById(Long id) {
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 分页查询供应商列表
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 供应商分页列表
+     */
+    @Override
+    public TableDataInfo<ProductSupplierVo> queryPageList(ProductSupplierBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<ProductSupplier> lqw = buildQueryWrapper(bo);
+        Page<ProductSupplierVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询符合条件的供应商列表
+     *
+     * @param bo 查询条件
+     * @return 供应商列表
+     */
+    @Override
+    public List<ProductSupplierVo> queryList(ProductSupplierBo bo) {
+        LambdaQueryWrapper<ProductSupplier> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<ProductSupplier> buildQueryWrapper(ProductSupplierBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<ProductSupplier> lqw = Wrappers.lambdaQuery();
+        lqw.orderByDesc(ProductSupplier::getCreateTime);
+        lqw.like(StringUtils.isNotBlank(bo.getName()), ProductSupplier::getName, bo.getName());
+        return lqw;
+    }
+
+    /**
+     * 新增供应商
+     *
+     * @param bo 供应商
+     * @return 是否新增成功
+     */
+    @Override
+    public Boolean insertByBo(ProductSupplierBo bo) {
+        ProductSupplier add = MapstructUtils.convert(bo, ProductSupplier.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改供应商
+     *
+     * @param bo 供应商
+     * @return 是否修改成功
+     */
+    @Override
+    public Boolean updateByBo(ProductSupplierBo bo) {
+        ProductSupplier update = MapstructUtils.convert(bo, ProductSupplier.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(ProductSupplier entity) {
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 校验并批量删除供应商信息
+     *
+     * @param ids     待删除的主键集合
+     * @param isValid 是否进行有效性校验
+     * @return 是否删除成功
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if (isValid) {
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}

+ 69 - 15
ruoyi-admin/src/main/java/org/dromara/web/service/impl/SuppliesManageServiceImpl.java

@@ -17,19 +17,27 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.system.config.RedisUtil;
+import org.dromara.system.domain.SysDept;
+import org.dromara.system.domain.SysDiseaseLabel;
 import org.dromara.system.domain.SysFoodCategory;
 import org.dromara.system.domain.SysFoodIngredient;
 import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.domain.vo.SysDiseaseLabelVo;
+import org.dromara.system.mapper.SysDeptMapper;
+import org.dromara.system.mapper.SysDiseaseLabelMapper;
 import org.dromara.system.service.ISysDeptService;
 import org.dromara.system.service.ISysDictDataService;
 import org.dromara.system.service.ISysDiseaseLabelService;
+import org.dromara.web.domain.ProductManufacturer;
+import org.dromara.web.domain.ProductSupplier;
 import org.dromara.web.domain.SuppliesCategory;
 import org.dromara.web.domain.SuppliesManage;
 import org.dromara.web.domain.bo.BatchSuppliesManageBo;
 import org.dromara.web.domain.bo.SuppliesManageBo;
 import org.dromara.web.domain.vo.SuppliesCategoryVo;
 import org.dromara.web.domain.vo.SuppliesManageVo;
+import org.dromara.web.mapper.ProductManufacturerMapper;
+import org.dromara.web.mapper.ProductSupplierMapper;
 import org.dromara.web.mapper.SuppliesCategoryMapper;
 import org.dromara.web.mapper.SuppliesManageMapper;
 import org.dromara.web.service.ISuppliesCategoryService;
@@ -56,16 +64,25 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
 
     private final SuppliesManageMapper baseMapper;
 
+    private final SysDeptMapper deptMapper;
+
     private final ISysDeptService deptService;
 
+    private final SysDiseaseLabelMapper labelMapper;
+
     private final SuppliesCategoryMapper categoryMapper;
 
+    private final ProductSupplierMapper supplierMapper;
+
+    private final ProductManufacturerMapper manufacturerMapper;
+
     private final ISysDictDataService dictDataService;
 
     private final ISuppliesCategoryService categoryService;
 
     private final ISysDiseaseLabelService diseaseLabelService;
 
+
     /**
      * 查询耗材管理
      *
@@ -296,6 +313,19 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
 
         List<SuppliesCategory> categoryList = categoryMapper.selectList(Wrappers.lambdaQuery(SuppliesCategory.class).select(SuppliesCategory::getCategoryId, SuppliesCategory::getCategoryName));
         Map<String, String> categoryMap = categoryList.stream().collect(Collectors.toMap(k1 -> k1.getCategoryName(), k2 -> String.valueOf(k2.getCategoryId()), (k1, k2) -> k1));
+
+        List<ProductSupplier> productSupplierList = supplierMapper.selectList(Wrappers.lambdaQuery(ProductSupplier.class).select(ProductSupplier::getId, ProductSupplier::getName));
+        Map<String, String> productSupplierMap = productSupplierList.stream().collect(Collectors.toMap(k1 -> k1.getName(), k2 -> String.valueOf(k2.getId()), (k1, k2) -> k1));
+
+        List<ProductManufacturer> productManufacturerList = manufacturerMapper.selectList(Wrappers.lambdaQuery(ProductManufacturer.class).select(ProductManufacturer::getId, ProductManufacturer::getName));
+        Map<String, String> productManufacturerMap = productManufacturerList.stream().collect(Collectors.toMap(k1 -> k1.getName(), k2 -> String.valueOf(k2.getId()), (k1, k2) -> k1));
+
+        List<SysDiseaseLabel> disLabelList = labelMapper.selectList(Wrappers.lambdaQuery(SysDiseaseLabel.class).select(SysDiseaseLabel::getLabelId, SysDiseaseLabel::getLabelName));
+        Map<String, String> labelMap = disLabelList.stream().collect(Collectors.toMap(k1 -> k1.getLabelName(), k2 -> String.valueOf(k2.getLabelId()), (k1, k2) -> k1));
+
+        List<SysDept> deptlList = deptMapper.selectList(Wrappers.lambdaQuery(SysDept.class).select(SysDept::getDeptId, SysDept::getDeptName));
+        Map<String, String> deptMap = deptlList.stream().collect(Collectors.toMap(k1 -> k1.getDeptName(), k2 -> String.valueOf(k2.getDeptId()), (k1, k2) -> k1));
+
         List<SuppliesManage> suppliesManages = new ArrayList<>();
         StringBuilder builder = new StringBuilder();
         //根据excel中的值获取字典label
@@ -314,14 +344,6 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
             productSpecUnitMap.put(y.getDictLabel(), k);
         });
 
-        Map<String, String> productSupplierMap = MapUtil.newHashMap(excelList.size());
-        dictDataService.selectMapByType("product_supplier").getData().forEach((k, y) -> {
-            productSupplierMap.put(y.getDictLabel(), k);
-        });
-        Map<String, String> productManufacturerMap = MapUtil.newHashMap(excelList.size());
-        dictDataService.selectMapByType("product_manufacturer").getData().forEach((k, y) -> {
-            productManufacturerMap.put(y.getDictLabel(), k);
-        });
         Map<String, String> putFlagMap = MapUtil.newHashMap(excelList.size());
         dictDataService.selectMapByType("put_flag").getData().forEach((k, y) -> {
             putFlagMap.put(y.getDictLabel(), k);
@@ -339,6 +361,8 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
             suppliesManage.setShelfLife(v.get(3));
             suppliesManage.setProductQualification(productQualificationMap.get(v.get(4)));
             StringBuilder categoryIds = new StringBuilder();
+            StringBuilder labelIds = new StringBuilder();
+            StringBuilder deptIds = new StringBuilder();
 
             List<String> suppliesNames = Arrays.stream(v.get(5).split("/")).map(String::trim).filter(StringUtils::isNotBlank).collect(Collectors.toList());
             List<String> categories = new ArrayList<>();
@@ -361,15 +385,42 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
                 suppliesManage.setBrand(colVal);
 
             }
+            colVal = v.get(13);
+            if (StrUtil.isNotBlank(colVal)) {
+                List<String> labelNames = Arrays.stream(colVal.split(",")).map(String::trim).filter(StringUtils::isNotBlank).collect(Collectors.toList());
+                List<String> dLabelNameList = new ArrayList<>();
+                for (String name : labelNames) {
+                    dLabelNameList.add(labelMap.get(name));
+                }
+                String label = String.join(",", dLabelNameList); // 自动处理逗号
+                labelIds.append(label);
+                suppliesManage.setProductLabel(labelIds.toString());
+            }
+            colVal = v.get(14);
+            if (StrUtil.isNotBlank(colVal)) {
+                List<String> deptNames = Arrays.stream(colVal.split(",")).map(String::trim).filter(StringUtils::isNotBlank).collect(Collectors.toList());
+                List<String> deptNameList = new ArrayList<>();
+                for (String name : deptNames) {
+                    SysDeptVo deptVo = deptMapper.selectVoById(deptMap.get(name));
+                    if (null != deptVo) {
+                        if (deptVo.getParentId() > 0) {
+                            deptNameList.add(deptVo.getParentId() + "," + deptVo.getDeptId());
+                        } else {
+                            deptNameList.add(deptVo.getDeptId().toString());
+                        }
+                    }
+                }
+                String deptId = String.join(";", deptNameList); // 自动处理逗号
+                deptIds.append(deptId);
+                suppliesManage.setApplicableDepartment(deptIds.toString());
+            }
+
             colVal = v.get(15);
             if (StrUtil.isNotBlank(colVal)) {
                 suppliesManage.setSupplier(productSupplierMap.get(colVal));
             }
+
             colVal = v.get(16);
-            if (StrUtil.isNotBlank(colVal)) {
-                suppliesManage.setApprovalNumber(colVal);
-            }
-            colVal = v.get(17);
             if (StrUtil.isNotBlank(colVal)) {
                 try {
                     suppliesManage.setProductLicenseExpiry(sdf.parse(colVal));
@@ -377,18 +428,21 @@ public class SuppliesManageServiceImpl implements ISuppliesManageService {
                     throw new RuntimeException(e);
                 }
             }
-            colVal = v.get(18);
+            colVal = v.get(17);
             if (StrUtil.isNotBlank(colVal)) {
                 suppliesManage.setApprovalNumber(colVal);
             }
-
+            colVal = v.get(18);
+            if (StrUtil.isNotBlank(colVal)) {
+                suppliesManage.setLicenseExpiryReminder(colVal);
+            }
             colVal = v.get(19);
             if (StrUtil.isNotBlank(colVal)) {
                 suppliesManage.setManufacturer(productManufacturerMap.get(colVal));
             }
             colVal = v.get(20);
             if (StrUtil.isNotBlank(colVal)) {
-                suppliesManage.setPutFlag(putFlagMap.get(colVal));
+                suppliesManage.setPutFlag(putFlagMap.get("已" + colVal));
             }
 
             suppliesManages.add(suppliesManage);

+ 7 - 0
ruoyi-admin/src/main/resources/mapper/warehouse/ProductManufacturerMapper.xml

@@ -0,0 +1,7 @@
+<?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.dromara.web.mapper.ProductManufacturerMapper">
+
+</mapper>

+ 7 - 0
ruoyi-admin/src/main/resources/mapper/warehouse/ProductSupplierMapper.xml

@@ -0,0 +1,7 @@
+<?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.dromara.web.mapper.ProductSupplierMapper">
+
+</mapper>