Ver código fonte

Merge remote-tracking branch 'origin/master'

wxf 2 anos atrás
pai
commit
f2445a3ae2
70 arquivos alterados com 2314 adições e 29 exclusões
  1. 17 0
      code/src/test/java/ItemDataSource.java
  2. 2 0
      hx-admin/src/main/resources/application-dev.yml
  3. 2 0
      hx-admin/src/main/resources/application-prod.yml
  4. 4 1
      hx-admin/src/main/resources/application-test.yml
  5. 64 0
      hx-admin/src/main/resources/application.yml
  6. 68 0
      hx-item/src/main/java/com/fjhx/item/controller/product/ProductSpuController.java
  7. 23 0
      hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductSpuDto.java
  8. 17 0
      hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductSpuSelectDto.java
  9. 4 0
      hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfo.java
  10. 37 0
      hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductSpu.java
  11. 28 0
      hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductSpuVo.java
  12. 26 0
      hx-item/src/main/java/com/fjhx/item/mapper/product/ProductSpuMapper.java
  13. 46 0
      hx-item/src/main/java/com/fjhx/item/service/product/ProductSpuService.java
  14. 91 0
      hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductSpuServiceImpl.java
  15. 22 0
      hx-item/src/main/resources/mapper/product/ProductSpuMapper.xml
  16. 13 5
      hx-oa/src/main/java/com/fjhx/oa/controller/netdisk/NetdiskController.java
  17. 5 0
      hx-oa/src/main/java/com/fjhx/oa/entity/netdisk/vo/NetdiskVo.java
  18. 5 3
      hx-oa/src/main/java/com/fjhx/oa/service/netdisk/NetdiskService.java
  19. 17 0
      hx-oa/src/main/java/com/fjhx/oa/service/netdisk/impl/NetdiskServiceImpl.java
  20. 71 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/quality/QualityController.java
  21. 71 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/quality/QualityDetailController.java
  22. 71 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/sales/SalesReturnController.java
  23. 71 0
      hx-purchase/src/main/java/com/fjhx/purchase/controller/sales/SalesReturnDetailController.java
  24. 51 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/enums/ArrivalDetailStatusEnum.java
  25. 0 10
      hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/po/ArrivalDetail.java
  26. 17 1
      hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/vo/ArrivalDetailVo.java
  27. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDetailDto.java
  28. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDetailSelectDto.java
  29. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDto.java
  30. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualitySelectDto.java
  31. 51 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/po/Quality.java
  32. 58 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/po/QualityDetail.java
  33. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityDetailVo.java
  34. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityVo.java
  35. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDetailDto.java
  36. 21 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDetailSelectDto.java
  37. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDto.java
  38. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnSelectDto.java
  39. 54 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/enums/SalesReturnDetailStatusEnum.java
  40. 51 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/enums/SalesReturnStatusEnum.java
  41. 60 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/po/SalesReturn.java
  42. 48 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/po/SalesReturnDetail.java
  43. 61 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/vo/SalesReturnDetailVo.java
  44. 17 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/vo/SalesReturnVo.java
  45. 6 5
      hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java
  46. 112 0
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SalesReturnFlow.java
  47. 1 1
      hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java
  48. 34 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/quality/QualityDetailMapper.java
  49. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/quality/QualityMapper.java
  50. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/sales/SalesReturnDetailMapper.java
  51. 26 0
      hx-purchase/src/main/java/com/fjhx/purchase/mapper/sales/SalesReturnMapper.java
  52. 5 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalDetailServiceImpl.java
  53. 54 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/quality/QualityDetailService.java
  54. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/quality/QualityService.java
  55. 72 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityDetailServiceImpl.java
  56. 112 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityServiceImpl.java
  57. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/sales/SalesReturnDetailService.java
  58. 46 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/sales/SalesReturnService.java
  59. 112 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnDetailServiceImpl.java
  60. 60 0
      hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnServiceImpl.java
  61. 6 0
      hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java
  62. 4 1
      hx-purchase/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml
  63. 31 0
      hx-purchase/src/main/resources/mapper/quality/QualityDetailMapper.xml
  64. 19 0
      hx-purchase/src/main/resources/mapper/quality/QualityMapper.xml
  65. 15 0
      hx-purchase/src/main/resources/mapper/sales/SalesReturnDetailMapper.xml
  66. 18 0
      hx-purchase/src/main/resources/mapper/sales/SalesReturnMapper.xml
  67. 5 1
      hx-wms/src/main/java/com/fjhx/wms/entity/warehouse/po/Warehouse.java
  68. 5 0
      hx-wms/src/main/java/com/fjhx/wms/entity/warehouse/vo/WarehouseVo.java
  69. 9 0
      hx-wms/src/main/java/com/fjhx/wms/service/warehouse/impl/WarehouseServiceImpl.java
  70. 1 0
      hx-wms/src/main/resources/mapper/warehouse/WarehouseMapper.xml

+ 17 - 0
code/src/test/java/ItemDataSource.java

@@ -0,0 +1,17 @@
+import fly.generator.GeneratorApplication;
+
+public class ItemDataSource {
+
+    public static void main(String[] args) {
+        GeneratorApplication.builder()
+                .url("jdbc:mysql://36.134.91.96:17330/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true")
+                .username("fjhx2012mysql")
+                .password("3PN-Mzn#vnP&q6d")
+                .port(9989)
+                .module("hx-item")
+                .parent("com.fjhx.item")
+                .superServiceClass("com.ruoyi.common.core.service.BaseService")
+                .build();
+    }
+
+}

+ 2 - 0
hx-admin/src/main/resources/application-dev.yml

@@ -97,3 +97,5 @@ mail:
     # 调用邮箱服务url前缀
     urlPrefix: http://localhost:8088/mailService/
 
+hx:
+    httpUrl: http://localhost:9898/

+ 2 - 0
hx-admin/src/main/resources/application-prod.yml

@@ -101,3 +101,5 @@ mail:
     # 调用邮箱服务url前缀
     urlPrefix: http://localhost:8088/mailService/
 
+hx:
+    httpUrl: http://116.205.247.33:81/prod-api/

+ 4 - 1
hx-admin/src/main/resources/application-test.yml

@@ -99,4 +99,7 @@ seata:
 
 mail:
     # 调用邮箱服务url前缀
-    urlPrefix: http://localhost:8088/mailService/
+    urlPrefix: http://localhost:8088/mailService/
+
+hx:
+    httpUrl: http://36.134.91.96:10006/test-api/

+ 64 - 0
hx-admin/src/main/resources/application.yml

@@ -66,6 +66,70 @@ spring:
   main:
     allow-circular-references: true
 
+  autoconfigure:
+    # 排除 Druid 自动配置
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+
+  datasource:
+    # 指定使用 Druid 数据源
+    type: com.alibaba.druid.pool.DruidDataSource
+
+    dynamic:
+      druid:
+        # 初始连接数
+        initialSize: 3
+        # 最小连接池数量
+        minIdle: 10
+        # 最大连接池数量
+        maxActive: 100
+        # 配置获取连接等待超时的时间
+        maxWait: 60000
+        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+        timeBetweenEvictionRunsMillis: 60000
+        # 配置一个连接在池中最小生存的时间,单位是毫秒
+        minEvictableIdleTimeMillis: 300000
+        # 配置一个连接在池中最大生存的时间,单位是毫秒
+        maxEvictableIdleTimeMillis: 900000
+        # 配置检测连接是否有效
+        validationQuery: SELECT 1 FROM DUAL
+        testWhileIdle: true
+        testOnBorrow: false
+        testOnReturn: false
+        poolPreparedStatements: true
+        maxPoolPreparedStatementPerConnectionSize: 20
+
+    druid:
+      webStatFilter:
+        enabled: true
+        exclusions:
+          - "*.js"
+          - "/druid/*"
+      statViewServlet:
+        enabled: true
+        # 设置白名单,不填则允许所有访问
+        allow:
+        urlPattern: /druid/*
+        # 控制台管理用户名和密码
+        loginUsername: superAdmin
+        loginPassword: 123456
+      filter:
+        # 配置StatFilter (SQL监控配置)
+        stat:
+          enabled: true # 开启 SQL 监控
+          logSlowSql: true  # 记录慢查询 SQL
+          slowSqlMillis: 1000 # 多长时间算慢查询
+          mergeSql: true # 条件参数化作为一条sql统计
+
+        # 配置WallFilter (防火墙配置)
+        wall:
+          enabled: true # 开启防火墙
+          config:
+            dropTableAllow: true # 允许删表操作
+            updateAllow: true # 允许更新操作
+            insertAllow: true # 允许插入操作
+            deleteAllow: true # 允许删除操作
+            multiStatementAllow: true # 支持一次执行多条sql
+
 # token配置
 token:
   # 令牌自定义标识

+ 68 - 0
hx-item/src/main/java/com/fjhx/item/controller/product/ProductSpuController.java

@@ -0,0 +1,68 @@
+package com.fjhx.item.controller.product;
+
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.vo.ProductSpuVo;
+import com.fjhx.item.entity.product.dto.ProductSpuSelectDto;
+import com.fjhx.item.entity.product.dto.ProductSpuDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.item.service.product.ProductSpuService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 产品spu 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@RestController
+@RequestMapping("/productSpu")
+public class ProductSpuController {
+
+    @Autowired
+    private ProductSpuService productSpuService;
+
+    /**
+     * 产品spu分页
+     */
+    @PostMapping("/page")
+    public Page<ProductSpuVo> page(@RequestBody ProductSpuSelectDto dto) {
+        return productSpuService.getPage(dto);
+    }
+
+    /**
+     * 产品spu明细
+     */
+    @PostMapping("/detail")
+    public ProductSpuVo detail(@RequestBody BaseSelectDto dto) {
+        return productSpuService.detail(dto.getId());
+    }
+
+    /**
+     * 产品spu新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody ProductSpuDto productSpuDto) {
+        productSpuService.add(productSpuDto);
+    }
+
+    /**
+     * 产品spu编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody ProductSpuDto productSpuDto) {
+        productSpuService.edit(productSpuDto);
+    }
+
+    /**
+     * 产品spu删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        productSpuService.delete(dto.getId());
+    }
+
+}

+ 23 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductSpuDto.java

@@ -0,0 +1,23 @@
+package com.fjhx.item.entity.product.dto;
+
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.entity.product.po.ProductSpu;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 产品spu新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class ProductSpuDto extends ProductSpu {
+
+    /**产品列表*/
+    List<ProductInfo> productInfos;
+
+}

+ 17 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/dto/ProductSpuSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.item.entity.product.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 产品spu列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class ProductSpuSelectDto extends BaseSelectDto {
+
+}

+ 4 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfo.java

@@ -68,6 +68,10 @@ public class ProductInfo extends BasePo {
      */
     private String remark;
 
+    /**维多利亚json*/
     private String victoriatouristJson;
 
+    /**产品spuid*/
+    private Long productSpuId;
+
 }

+ 37 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductSpu.java

@@ -0,0 +1,37 @@
+package com.fjhx.item.entity.product.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 产品spu
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("product_spu")
+public class ProductSpu extends BasePo {
+
+    /**
+     * spu编码
+     */
+    private String code;
+
+    /**
+     * spu名称
+     */
+    private String name;
+
+    /**
+     * 说明
+     */
+    private String remark;
+
+}

+ 28 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/vo/ProductSpuVo.java

@@ -0,0 +1,28 @@
+package com.fjhx.item.entity.product.vo;
+
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.entity.product.po.ProductSpu;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 产品spu列表查询返回值实体
+ *
+ * @author
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class ProductSpuVo extends ProductSpu {
+
+    /**
+     * 产品列表
+     */
+    private List<ProductInfo> productInfoList;
+
+    /**关联产品数*/
+    private Integer count;
+
+}

+ 26 - 0
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductSpuMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.item.mapper.product;
+
+import com.fjhx.item.entity.product.po.ProductSpu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.vo.ProductSpuVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 产品spu Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface ProductSpuMapper extends BaseMapper<ProductSpu> {
+
+    /**
+     * 产品spu分页
+     */
+    Page<ProductSpuVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductSpu> wrapper);
+
+}

+ 46 - 0
hx-item/src/main/java/com/fjhx/item/service/product/ProductSpuService.java

@@ -0,0 +1,46 @@
+package com.fjhx.item.service.product;
+
+import com.fjhx.item.entity.product.po.ProductSpu;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.vo.ProductSpuVo;
+import com.fjhx.item.entity.product.dto.ProductSpuSelectDto;
+import com.fjhx.item.entity.product.dto.ProductSpuDto;
+
+
+/**
+ * <p>
+ * 产品spu 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface ProductSpuService extends BaseService<ProductSpu> {
+
+    /**
+     * 产品spu分页
+     */
+    Page<ProductSpuVo> getPage(ProductSpuSelectDto dto);
+
+    /**
+     * 产品spu明细
+     */
+    ProductSpuVo detail(Long id);
+
+    /**
+     * 产品spu新增
+     */
+    void add(ProductSpuDto productSpuDto);
+
+    /**
+     * 产品spu编辑
+     */
+    void edit(ProductSpuDto productSpuDto);
+
+    /**
+     * 产品spu删除
+     */
+    void delete(Long id);
+
+}

+ 91 - 0
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductSpuServiceImpl.java

@@ -0,0 +1,91 @@
+package com.fjhx.item.service.product.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.PageUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.entity.product.po.ProductSpu;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.mapper.product.ProductSpuMapper;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.item.service.product.ProductSpuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.item.entity.product.vo.ProductSpuVo;
+import com.fjhx.item.entity.product.dto.ProductSpuSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.item.entity.product.dto.ProductSpuDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 产品spu 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.ITEM)
+@Service
+public class ProductSpuServiceImpl extends ServiceImpl<ProductSpuMapper, ProductSpu> implements ProductSpuService {
+
+    @Autowired
+    ProductInfoService productInfoService;
+
+    @Override
+    public Page<ProductSpuVo> getPage(ProductSpuSelectDto dto) {
+        IWrapper<ProductSpu> wrapper = getWrapper();
+        wrapper.orderByDesc("ps", ProductSpu::getId);
+        Page<ProductSpuVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public ProductSpuVo detail(Long id) {
+        ProductSpu ProductSpu = this.getById(id);
+        ProductSpuVo result = BeanUtil.toBean(ProductSpu, ProductSpuVo.class);
+        List<ProductInfo> list = productInfoService.list(q -> q.eq(ProductInfo::getProductSpuId, id));
+        result.setProductInfoList(list);
+        return result;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(ProductSpuDto productSpuDto) {
+        this.save(productSpuDto);
+        List<ProductInfo> productInfos = productSpuDto.getProductInfos();
+        for (ProductInfo productInfo: productInfos){
+            productInfo.setProductSpuId(productSpuDto.getId());
+        }
+        productInfoService.updateBatchById(productInfos);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(ProductSpuDto productSpuDto) {
+        this.updateById(productSpuDto);
+        List<ProductInfo> productInfos = productSpuDto.getProductInfos();
+        if(ObjectUtil.isNotEmpty(productInfos)){
+            List<Long> productIds = productInfos.stream().map(ProductInfo::getId).collect(Collectors.toList());
+            List<ProductInfo> productInfos1 = productInfoService.list(q->q.notIn(ProductInfo::getId,productIds));
+            for (ProductInfo productInfo :productInfos1){
+                productInfo.setProductSpuId(null);
+            }
+            productInfoService.updateBatchById(productInfos1);
+        }
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 22 - 0
hx-item/src/main/resources/mapper/product/ProductSpuMapper.xml

@@ -0,0 +1,22 @@
+<?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="com.fjhx.item.mapper.product.ProductSpuMapper">
+    <select id="getPage" resultType="com.fjhx.item.entity.product.vo.ProductSpuVo">
+        SELECT
+            ps.id,
+            ps.CODE,
+            ps.NAME,
+            ps.remark,
+            ps.create_user,
+            ps.create_time,
+            ps.update_user,
+            ps.update_time,
+            count( pi.id ) AS count
+        FROM
+            product_spu ps
+            left JOIN product_info pi ON pi.product_spu_id = ps.id
+        GROUP BY ps.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 13 - 5
hx-oa/src/main/java/com/fjhx/oa/controller/netdisk/NetdiskController.java

@@ -1,13 +1,13 @@
 package com.fjhx.oa.controller.netdisk;
 
-import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.oa.entity.netdisk.vo.NetdiskVo;
-import com.fjhx.oa.entity.netdisk.dto.NetdiskSelectDto;
 import com.fjhx.oa.entity.netdisk.dto.NetdiskDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.oa.entity.netdisk.dto.NetdiskSelectDto;
+import com.fjhx.oa.entity.netdisk.vo.NetdiskVo;
 import com.fjhx.oa.service.netdisk.NetdiskService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -17,7 +17,7 @@ import java.util.List;
  * 网盘 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-04-07
  */
 @RestController
@@ -36,6 +36,14 @@ public class NetdiskController {
     }
 
     /**
+     * 网盘子目录树
+     */
+    @GetMapping("/tree")
+    public List<NetdiskVo> tree() {
+        return netdiskService.tree();
+    }
+
+    /**
      * 网盘明细
      */
     @PostMapping("/detail")

+ 5 - 0
hx-oa/src/main/java/com/fjhx/oa/entity/netdisk/vo/NetdiskVo.java

@@ -4,6 +4,8 @@ import com.fjhx.oa.entity.netdisk.po.Netdisk;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 网盘列表查询返回值实体
  *
@@ -19,4 +21,7 @@ public class NetdiskVo extends Netdisk {
      */
     private String createUserName;
 
+    /**子目录列表*/
+    List<NetdiskVo> netdiskList;
+
 }

+ 5 - 3
hx-oa/src/main/java/com/fjhx/oa/service/netdisk/NetdiskService.java

@@ -25,9 +25,11 @@ public interface NetdiskService extends BaseService<Netdisk> {
      */
     Page<NetdiskVo> getPage(NetdiskSelectDto dto);
 
-    /**
-     * 网盘明细
-     */
+    List<NetdiskVo> tree();
+
+        /**
+         * 网盘明细
+         */
     NetdiskVo detail(Long id);
 
     /**

+ 17 - 0
hx-oa/src/main/java/com/fjhx/oa/service/netdisk/impl/NetdiskServiceImpl.java

@@ -59,6 +59,23 @@ public class NetdiskServiceImpl extends ServiceImpl<NetdiskMapper, Netdisk> impl
         return page;
     }
 
+    //网盘目录子目录树
+    @Override
+    public List<NetdiskVo> tree() {
+        List<Netdisk> list = list(q -> q.eq(Netdisk::getType, 1));
+
+        return treeRecursion(list,-1l);
+    }
+
+    private List<NetdiskVo> treeRecursion(List<Netdisk> list, Long id){
+        List<Netdisk> netdiskList = list.stream().filter(f -> f.getParentFolderId().equals(id)).collect(Collectors.toList());
+        List<NetdiskVo> netdiskVos = BeanUtil.copyToList(netdiskList, NetdiskVo.class);
+        for (NetdiskVo netdisk :netdiskVos){
+            netdisk.setNetdiskList(treeRecursion(list,netdisk.getId()));
+        }
+        return netdiskVos;
+    }
+
     @Override
     public NetdiskVo detail(Long id) {
         Netdisk Netdisk = this.getById(id);

+ 71 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/quality/QualityController.java

@@ -0,0 +1,71 @@
+package com.fjhx.purchase.controller.quality;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityVo;
+import com.fjhx.purchase.entity.quality.dto.QualitySelectDto;
+import com.fjhx.purchase.entity.quality.dto.QualityDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.quality.QualityService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 质检 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@RestController
+@RequestMapping("/quality")
+public class QualityController {
+
+    @Autowired
+    private QualityService qualityService;
+
+    /**
+     * 质检分页
+     */
+    @PostMapping("/page")
+    public Page<QualityVo> page(@RequestBody QualitySelectDto dto) {
+        return qualityService.getPage(dto);
+    }
+
+    /**
+     * 质检明细
+     */
+    @PostMapping("/detail")
+    public QualityVo detail(@RequestBody BaseSelectDto dto) {
+        return qualityService.detail(dto.getId());
+    }
+
+    /**
+     * 质检新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody QualityDto qualityDto) {
+        qualityService.add(qualityDto);
+    }
+
+    /**
+     * 质检编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody QualityDto qualityDto) {
+        qualityService.edit(qualityDto);
+    }
+
+    /**
+     * 质检删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        qualityService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/quality/QualityDetailController.java

@@ -0,0 +1,71 @@
+package com.fjhx.purchase.controller.quality;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailSelectDto;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.quality.QualityDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 质检明细单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@RestController
+@RequestMapping("/qualityDetail")
+public class QualityDetailController {
+
+    @Autowired
+    private QualityDetailService qualityDetailService;
+
+    /**
+     * 质检明细单分页
+     */
+    @PostMapping("/page")
+    public Page<QualityDetailVo> page(@RequestBody QualityDetailSelectDto dto) {
+        return qualityDetailService.getPage(dto);
+    }
+
+    /**
+     * 质检明细单明细
+     */
+    @PostMapping("/detail")
+    public QualityDetailVo detail(@RequestBody BaseSelectDto dto) {
+        return qualityDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 质检明细单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody QualityDetailDto qualityDetailDto) {
+        qualityDetailService.add(qualityDetailDto);
+    }
+
+    /**
+     * 质检明细单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody QualityDetailDto qualityDetailDto) {
+        qualityDetailService.edit(qualityDetailDto);
+    }
+
+    /**
+     * 质检明细单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        qualityDetailService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/sales/SalesReturnController.java

@@ -0,0 +1,71 @@
+package com.fjhx.purchase.controller.sales;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnSelectDto;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.sales.SalesReturnService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 退货 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@RestController
+@RequestMapping("/salesReturn")
+public class SalesReturnController {
+
+    @Autowired
+    private SalesReturnService salesReturnService;
+
+    /**
+     * 退货分页
+     */
+    @PostMapping("/page")
+    public Page<SalesReturnVo> page(@RequestBody SalesReturnSelectDto dto) {
+        return salesReturnService.getPage(dto);
+    }
+
+    /**
+     * 退货明细
+     */
+    @PostMapping("/detail")
+    public SalesReturnVo detail(@RequestBody BaseSelectDto dto) {
+        return salesReturnService.detail(dto.getId());
+    }
+
+    /**
+     * 退货新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SalesReturnDto salesReturnDto) {
+        salesReturnService.add(salesReturnDto);
+    }
+
+    /**
+     * 退货编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SalesReturnDto salesReturnDto) {
+        salesReturnService.edit(salesReturnDto);
+    }
+
+    /**
+     * 退货删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        salesReturnService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
hx-purchase/src/main/java/com/fjhx/purchase/controller/sales/SalesReturnDetailController.java

@@ -0,0 +1,71 @@
+package com.fjhx.purchase.controller.sales;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnDetailVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailSelectDto;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailDto;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.purchase.service.sales.SalesReturnDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * <p>
+ * 到货明细单 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@RestController
+@RequestMapping("/salesReturnDetail")
+public class SalesReturnDetailController {
+
+    @Autowired
+    private SalesReturnDetailService salesReturnDetailService;
+
+    /**
+     * 到货明细单分页
+     */
+    @PostMapping("/page")
+    public Page<SalesReturnDetailVo> page(@RequestBody SalesReturnDetailSelectDto dto) {
+        return salesReturnDetailService.getPage(dto);
+    }
+
+    /**
+     * 到货明细单明细
+     */
+    @PostMapping("/detail")
+    public SalesReturnDetailVo detail(@RequestBody BaseSelectDto dto) {
+        return salesReturnDetailService.detail(dto.getId());
+    }
+
+    /**
+     * 到货明细单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody SalesReturnDetailDto salesReturnDetailDto) {
+        salesReturnDetailService.add(salesReturnDetailDto);
+    }
+
+    /**
+     * 到货明细单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody SalesReturnDetailDto salesReturnDetailDto) {
+        salesReturnDetailService.edit(salesReturnDetailDto);
+    }
+
+    /**
+     * 到货明细单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        salesReturnDetailService.delete(dto.getId());
+    }
+
+}

+ 51 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/enums/ArrivalDetailStatusEnum.java

@@ -0,0 +1,51 @@
+package com.fjhx.purchase.entity.arrival.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 到货质检状态枚举
+ * 质检状态 0未质检 10部分质检 20全部质检
+ */
+public enum ArrivalDetailStatusEnum {
+    STATUS_0(0, "未质检"),
+    STATUS_10(10, "部分质检"),
+    STATUS_20(20,"全部质检"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    ArrivalDetailStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (ArrivalDetailStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 0 - 10
hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/po/ArrivalDetail.java

@@ -46,16 +46,6 @@ public class ArrivalDetail extends BasePo {
     private Integer status;
 
     /**
-     * 合格数量
-     */
-    private BigDecimal qualifiedCount;
-
-    /**
-     * 不合格数量
-     */
-    private BigDecimal noQualifiedCount;
-
-    /**
      * 备注
      */
     private String remark;

+ 17 - 1
hx-purchase/src/main/java/com/fjhx/purchase/entity/arrival/vo/ArrivalDetailVo.java

@@ -1,10 +1,11 @@
 package com.fjhx.purchase.entity.arrival.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 到货明细单列表查询返回值实体
  *
@@ -59,4 +60,19 @@ public class ArrivalDetailVo extends ArrivalDetail {
      * 货品规格型号
      */
     private String productSpec;
+
+    /**
+     * 合格数量
+     */
+    private BigDecimal qualifiedCount;
+
+    /**
+     * 不合格数量
+     */
+    private BigDecimal noQualifiedCount;
+
+    /**
+     * 质检总数
+     */
+    private BigDecimal sumQualityCount;
 }

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.dto;
+
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检明细单新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualityDetailDto extends QualityDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检明细单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualityDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualityDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.dto;
+
+import com.fjhx.purchase.entity.quality.po.Quality;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualityDto extends Quality {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/dto/QualitySelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualitySelectDto extends BaseSelectDto {
+
+}

+ 51 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/po/Quality.java

@@ -0,0 +1,51 @@
+package com.fjhx.purchase.entity.quality.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 质检
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("quality")
+public class Quality extends BasePo {
+
+    /**
+     * 质检单编码
+     */
+    private String code;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplyId;
+
+    /**
+     * 到货单ID
+     */
+    private Long arrivalId;
+
+    /**
+     * 状态 备用字段
+     */
+    private Integer status;
+
+    /**
+     * 质检明细
+     */
+    @TableField(exist = false)
+    private List<QualityDetail> qualityDetailList;
+
+}

+ 58 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/po/QualityDetail.java

@@ -0,0 +1,58 @@
+package com.fjhx.purchase.entity.quality.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 质检明细单
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("quality_detail")
+public class QualityDetail extends BasePo {
+
+    /**
+     * 关联ID  产品ID/货品ID
+     */
+    private Long bussinessId;
+
+    /**
+     * 到货明细ID
+     */
+    private Long arrivalDetailId;
+
+    /**
+     * 质检主表ID
+     */
+    private Long qualityId;
+
+    /**
+     * 状态--备用
+     */
+    private Integer status;
+
+    /**
+     * 合格数量
+     */
+    private BigDecimal qualifiedCount;
+
+    /**
+     * 不合格数量
+     */
+    private BigDecimal noQualifiedCount;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityDetailVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.vo;
+
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检明细单列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualityDetailVo extends QualityDetail {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.quality.vo;
+
+import com.fjhx.purchase.entity.quality.po.Quality;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 质检列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class QualityVo extends Quality {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDetailDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.sales.dto;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 到货明细单新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnDetailDto extends SalesReturnDetail {
+
+}

+ 21 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDetailSelectDto.java

@@ -0,0 +1,21 @@
+package com.fjhx.purchase.entity.sales.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 到货明细单列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnDetailSelectDto extends BaseSelectDto {
+
+    /**
+     * 状态
+     */
+    private String status;
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.sales.dto;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 退货新增编辑入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnDto extends SalesReturn {
+
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/dto/SalesReturnSelectDto.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.sales.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 退货列表查询入参实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnSelectDto extends BaseSelectDto {
+
+}

+ 54 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/enums/SalesReturnDetailStatusEnum.java

@@ -0,0 +1,54 @@
+package com.fjhx.purchase.entity.sales.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 退货明细状态枚举
+ */
+public enum SalesReturnDetailStatusEnum {
+    STATUS_10(10, "审批中"),
+    STATUS_15(15, "驳回"),
+    STATUS_20(20,"待退货"),
+    STATUS_30(30,"部分退货"),
+    STATUS_40(40,"已退货"),
+
+    STATUS_50(50,"结束"),
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SalesReturnDetailStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (SalesReturnDetailStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 51 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/enums/SalesReturnStatusEnum.java

@@ -0,0 +1,51 @@
+package com.fjhx.purchase.entity.sales.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 退货状态枚举
+ */
+public enum SalesReturnStatusEnum {
+    DRAFT(0, "草稿"),
+    UNDER_REVIEW(10, "审批中"),
+    REJECT(20, "驳回"),
+    PASS(30,"待退货")
+    ;
+    private int key;
+
+    private String value;
+
+    private static Map<Integer, String> map = new LinkedHashMap<>();
+
+    SalesReturnStatusEnum(int key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<Integer, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (SalesReturnStatusEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public int getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 60 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/po/SalesReturn.java

@@ -0,0 +1,60 @@
+package com.fjhx.purchase.entity.sales.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 退货
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("sales_return")
+public class SalesReturn extends BasePo {
+
+    /**
+     * 退货单编码
+     */
+    private String code;
+
+    /**
+     * 供应商ID
+     */
+    private Long supplyId;
+
+    /**
+     * 操作人
+     */
+    private String returnName;
+
+    /**
+     * 状态 10审批中  20待退货  30部分退货  40已退货  50结束
+     */
+    private Integer status;
+
+    /**
+     * 审核通过时间
+     */
+    private Date approvedDate;
+
+    /**
+     * 流程id
+     */
+    private String processInstanceId;
+
+    /**
+     * 退货明细列表
+     */
+    @TableField(exist = false)
+    private List<SalesReturnDetail> salesReturnDetailList;
+}

+ 48 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/po/SalesReturnDetail.java

@@ -0,0 +1,48 @@
+package com.fjhx.purchase.entity.sales.po;
+
+import com.ruoyi.common.core.domain.BasePo;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 到货明细单
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("sales_return_detail")
+public class SalesReturnDetail extends BasePo {
+
+    /**
+     * 关联ID  产品ID/货品ID
+     */
+    private Long bussinessId;
+
+    /**
+     * 退货主表ID
+     */
+    private Long salesReturnId;
+
+    /**
+     * 到货数量
+     */
+    private BigDecimal count;
+
+    /**
+     * 状态 --备用
+     */
+    private Integer status;
+
+    /**
+     * 退货原因
+     */
+    private String remark;
+
+}

+ 61 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/vo/SalesReturnDetailVo.java

@@ -0,0 +1,61 @@
+package com.fjhx.purchase.entity.sales.vo;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 到货明细单列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnDetailVo extends SalesReturnDetail {
+
+    /**
+     * 供应商ID
+     */
+    private Long supplyId;
+
+    /**
+     * 供应商名称
+     */
+    private String supplyName;
+
+    /**
+     * 退货单号
+     */
+    private String code;
+
+    /**
+     * 货品类型
+     */
+    private Integer productType;
+
+    /**
+     * 所属分类
+     */
+    private String productCategory;
+
+    /**
+     * 货品编码
+     */
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    private String productName;
+
+    /**
+     * 单位
+     */
+    private String productUnit;
+
+    /**
+     * 货品规格型号
+     */
+    private String productSpec;
+}

+ 17 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/sales/vo/SalesReturnVo.java

@@ -0,0 +1,17 @@
+package com.fjhx.purchase.entity.sales.vo;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 退货列表查询返回值实体
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+public class SalesReturnVo extends SalesReturn {
+
+}

+ 6 - 5
hx-purchase/src/main/java/com/fjhx/purchase/flow/PurchaseFlow.java

@@ -57,11 +57,12 @@ public class PurchaseFlow extends FlowDelegate {
         purchase.setCode(CodeEnum.PURCHASE.getCode());
         purchase.setPurchaseStatus(PurchaseStatusEnum.UNDER_REVIEW.getKey());
         purchaseService.save(purchase);
-        if(CollectionUtils.isNotEmpty(purchase.getPurchaseDetailList())){
-            for(PurchaseDetail s : purchase.getPurchaseDetailList()){
+        List<PurchaseDetail> purchaseDetailList = purchase.getPurchaseDetailList();
+        if(CollectionUtils.isNotEmpty(purchaseDetailList)){
+            for(PurchaseDetail s : purchaseDetailList){
                 s.setPurchaseId(purchase.getId());
             }
-            purchaseDetailService.saveBatch(purchase.getPurchaseDetailList());
+            purchaseDetailService.saveBatch(purchaseDetailList);
         }
         return purchase.getId();
     }
@@ -81,11 +82,11 @@ public class PurchaseFlow extends FlowDelegate {
         if(ObjectUtils.isEmpty(purchase)){
             throw new ServiceException("采购单不存在");
         }
-        //修改购状态为审批通过
+        //修改购状态为审批通过
         purchase.setPurchaseStatus(PurchaseStatusEnum.PASS.getKey());
         purchase.setApprovedDate(new Date());
         purchaseService.updateById(purchase);
-        //修改购明细为待采购
+        //修改购明细为待采购
         PurchaseDetail detail = new PurchaseDetail();
         detail.setStatus(PurchaseDetailStatusEnum.PASS.getKey());
         purchaseDetailService.update(detail,Wrappers.<PurchaseDetail>query()

+ 112 - 0
hx-purchase/src/main/java/com/fjhx/purchase/flow/SalesReturnFlow.java

@@ -0,0 +1,112 @@
+package com.fjhx.purchase.flow;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDetailStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
+import com.fjhx.purchase.entity.sales.enums.SalesReturnDetailStatusEnum;
+import com.fjhx.purchase.entity.sales.enums.SalesReturnStatusEnum;
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import com.fjhx.purchase.service.sales.SalesReturnDetailService;
+import com.fjhx.purchase.service.sales.SalesReturnService;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.fjhx.wms.entity.stock.po.StockWait;
+import com.fjhx.wms.service.stock.StockWaitService;
+import com.obs.services.internal.ServiceException;
+import io.seata.spring.annotation.GlobalTransactional;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 退货流程
+ * @Author:caozj
+ * @DATE:2023/4/3 17:38
+ */
+@DS(SourceConstant.PURCHASE)
+@Component
+public class SalesReturnFlow extends FlowDelegate {
+
+    @Override
+    public String getFlowKey() {
+        return "sales_return_flow";
+    }
+
+
+    /**
+     * 发起流程
+     * @param flowId 流程ID
+     * @param submitData 申购数据
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long start(Long flowId, JSONObject submitData) {
+        SalesReturnService salesReturnService = SpringUtil.getBean(SalesReturnService.class);
+        SalesReturnDetailService salesReturnDetailService = SpringUtil.getBean(SalesReturnDetailService.class);
+        SalesReturn salesReturn = submitData.toJavaObject(SalesReturn.class);
+        salesReturn.setCode(CodeEnum.SALES_RETURN.getCode());
+        salesReturnService.save(salesReturn);
+        List<SalesReturnDetail> salesReturnDetailList = salesReturn.getSalesReturnDetailList();
+        if(CollectionUtils.isNotEmpty(salesReturnDetailList)){
+            for(SalesReturnDetail s : salesReturnDetailList){
+                s.setSalesReturnId(salesReturn.getId());
+            }
+            salesReturnDetailService.saveBatch(salesReturnDetailList);
+        }
+        return salesReturn.getId();
+    }
+
+    /**
+     * 结束流程
+     * @param flowId 流程ID
+     * @param businessId 业务ID
+     * @param submitData 数据
+     */
+    @Override
+    @GlobalTransactional
+    public void end(Long flowId, Long businessId, JSONObject submitData) {
+        SalesReturnService salesReturnService = SpringUtil.getBean(SalesReturnService.class);
+        SalesReturnDetailService salesReturnDetailService = SpringUtil.getBean(SalesReturnDetailService.class);
+        StockWaitService stockWaitService = SpringUtil.getBean(StockWaitService.class);
+        //通过业务ID查询退货数据
+        SalesReturn salesReturn = salesReturnService.getById(businessId);
+        if(ObjectUtils.isEmpty(salesReturn)){
+            throw new ServiceException("退货单单不存在");
+        }
+        //修改退货状态为待退货
+        salesReturn.setStatus(SalesReturnStatusEnum.PASS.getKey());
+        salesReturn.setApprovedDate(new Date());
+        salesReturnService.updateById(salesReturn);
+        //修改退货明细状态为待退货
+        SalesReturnDetail detail = new SalesReturnDetail();
+        detail.setStatus(SalesReturnDetailStatusEnum.STATUS_20.getKey());
+        salesReturnDetailService.update(detail,Wrappers.<SalesReturnDetail>query()
+                .lambda().eq(SalesReturnDetail::getSalesReturnId,salesReturn.getId()));
+        List<SalesReturnDetail> salesReturnDetailList = salesReturnDetailService.list(Wrappers.<SalesReturnDetail>query()
+                        .lambda().eq(SalesReturnDetail::getSalesReturnId,salesReturn.getId()));
+        //添加一份待出库数据
+        List<StockWait> stockWaitList = new ArrayList<>();
+        for(SalesReturnDetail s:salesReturnDetailList){
+            StockWait stockWait = new StockWait();
+            stockWait.setProductId(s.getBussinessId());
+            stockWait.setBusinessId(s.getId());//到货明细ID
+            stockWait.setType(2);//入库
+            stockWait.setStatus(0);//待入库
+            stockWait.setBusinessType(4);//退货出库
+            stockWait.setQuantity(s.getCount());
+            stockWaitList.add(stockWait);
+        }
+        stockWaitService.saveBatch(stockWaitList);
+    }
+}

+ 1 - 1
hx-purchase/src/main/java/com/fjhx/purchase/flow/SubscribeFlow.java

@@ -55,7 +55,7 @@ public class SubscribeFlow extends FlowDelegate {
             for(SubscribeDetail s : SubscribeDetails){
                 s.setSubscribeId(subscribe.getId());
             }
-            subscribeDetailService.saveBatch(subscribe.getSubscribeDetailList());
+            subscribeDetailService.saveBatch(SubscribeDetails);
         }
         return subscribe.getId();
     }

+ 34 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/quality/QualityDetailMapper.java

@@ -0,0 +1,34 @@
+package com.fjhx.purchase.mapper.quality;
+
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+
+
+/**
+ * <p>
+ * 质检明细单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface QualityDetailMapper extends BaseMapper<QualityDetail> {
+
+    /**
+     * 质检明细单分页
+     */
+    Page<QualityDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<QualityDetail> wrapper);
+
+    /**
+     * 获取当前到货明细总质检数量
+     * @param arrivalDetailId
+     * @return
+     */
+    BigDecimal getSumQualityCount(@Param("arrivalDetailId")Long arrivalDetailId);
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/quality/QualityMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.quality;
+
+import com.fjhx.purchase.entity.quality.po.Quality;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 质检 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface QualityMapper extends BaseMapper<Quality> {
+
+    /**
+     * 质检分页
+     */
+    Page<QualityVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Quality> wrapper);
+
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/sales/SalesReturnDetailMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.sales;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnDetailVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 到货明细单 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface SalesReturnDetailMapper extends BaseMapper<SalesReturnDetail> {
+
+    /**
+     * 到货明细单分页
+     */
+    Page<SalesReturnDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SalesReturnDetail> wrapper);
+
+}

+ 26 - 0
hx-purchase/src/main/java/com/fjhx/purchase/mapper/sales/SalesReturnMapper.java

@@ -0,0 +1,26 @@
+package com.fjhx.purchase.mapper.sales;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 退货 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface SalesReturnMapper extends BaseMapper<SalesReturn> {
+
+    /**
+     * 退货分页
+     */
+    Page<SalesReturnVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SalesReturn> wrapper);
+
+}

+ 5 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalDetailServiceImpl.java

@@ -14,6 +14,7 @@ import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.mapper.arrival.ArrivalDetailMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.service.quality.QualityDetailService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.ruoyi.common.utils.StringUtils;
@@ -49,6 +50,8 @@ public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, A
     @Autowired
     private ProductInfoService productInfoService;
 
+    @Autowired
+    private QualityDetailService qualityDetailService;
     /**
      * 分页
      * @param dto
@@ -61,6 +64,7 @@ public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, A
             wrapper.eq("t1", PurchaseDetail::getStatus,dto.getStatus());
         }
         wrapper.orderByDesc("t1", ArrivalDetail::getCreateTime);
+        wrapper.groupBy("t1.id");
         Page<ArrivalDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<ArrivalDetailVo> list = page.getRecords();
         if(CollectionUtils.isNotEmpty(list)){
@@ -109,9 +113,9 @@ public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, A
         if(MapUtils.isNotEmpty(productMap)) {
             for(ArrivalDetail s:arrivalDetailList){
                 //查询出当前这款到货明细的质检总数
-
                 ArrivalDetailVo result = BeanUtil.toBean(s, ArrivalDetailVo.class);
                 ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
+                result.setSumQualityCount(qualityDetailService.getSumQualityCount(s.getId()));
                 result.setProductCategory(p.getClassifyName());
                 result.setProductCode(p.getCode());
                 result.setProductUnit(p.getUnit());

+ 54 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/quality/QualityDetailService.java

@@ -0,0 +1,54 @@
+package com.fjhx.purchase.service.quality;
+
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailSelectDto;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailDto;
+
+import java.math.BigDecimal;
+
+
+/**
+ * <p>
+ * 质检明细单 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface QualityDetailService extends BaseService<QualityDetail> {
+
+    /**
+     * 质检明细单分页
+     */
+    Page<QualityDetailVo> getPage(QualityDetailSelectDto dto);
+
+    /**
+     * 质检明细单明细
+     */
+    QualityDetailVo detail(Long id);
+
+    /**
+     * 质检明细单新增
+     */
+    void add(QualityDetailDto qualityDetailDto);
+
+    /**
+     * 质检明细单编辑
+     */
+    void edit(QualityDetailDto qualityDetailDto);
+
+    /**
+     * 质检明细单删除
+     */
+    void delete(Long id);
+
+    /**
+     * 获取当前到货明细总质检数量
+     * @param arrivalDetailId
+     * @return
+     */
+    BigDecimal getSumQualityCount(Long arrivalDetailId);
+}

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/quality/QualityService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.quality;
+
+import com.fjhx.purchase.entity.quality.po.Quality;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityVo;
+import com.fjhx.purchase.entity.quality.dto.QualitySelectDto;
+import com.fjhx.purchase.entity.quality.dto.QualityDto;
+
+
+/**
+ * <p>
+ * 质检 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface QualityService extends BaseService<Quality> {
+
+    /**
+     * 质检分页
+     */
+    Page<QualityVo> getPage(QualitySelectDto dto);
+
+    /**
+     * 质检明细
+     */
+    QualityVo detail(Long id);
+
+    /**
+     * 质检新增
+     */
+    void add(Quality quality);
+
+    /**
+     * 质检编辑
+     */
+    void edit(QualityDto qualityDto);
+
+    /**
+     * 质检删除
+     */
+    void delete(Long id);
+
+}

+ 72 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityDetailServiceImpl.java

@@ -0,0 +1,72 @@
+package com.fjhx.purchase.service.quality.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.mapper.quality.QualityDetailMapper;
+import com.fjhx.purchase.service.quality.QualityDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.quality.dto.QualityDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.math.BigDecimal;
+
+
+/**
+ * <p>
+ * 质检明细单 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@Service
+public class QualityDetailServiceImpl extends ServiceImpl<QualityDetailMapper, QualityDetail> implements QualityDetailService {
+
+    @Override
+    public Page<QualityDetailVo> getPage(QualityDetailSelectDto dto) {
+        IWrapper<QualityDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("qd", QualityDetail::getId);
+        Page<QualityDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public QualityDetailVo detail(Long id) {
+        QualityDetail QualityDetail = this.getById(id);
+        QualityDetailVo result = BeanUtil.toBean(QualityDetail, QualityDetailVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(QualityDetailDto qualityDetailDto) {
+        this.save(qualityDetailDto);
+    }
+
+    @Override
+    public void edit(QualityDetailDto qualityDetailDto) {
+        this.updateById(qualityDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+    /**
+     * 获取当前到货明细总质检数量
+     * @param arrivalDetailId
+     * @return
+     */
+    @Override
+    public BigDecimal getSumQualityCount(Long arrivalDetailId) {
+        return baseMapper.getSumQualityCount(arrivalDetailId);
+    }
+
+}

+ 112 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/quality/impl/QualityServiceImpl.java

@@ -0,0 +1,112 @@
+package com.fjhx.purchase.service.quality.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.arrival.enums.ArrivalDetailStatusEnum;
+import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
+import com.fjhx.purchase.entity.quality.po.Quality;
+import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.mapper.quality.QualityMapper;
+import com.fjhx.purchase.service.arrival.ArrivalDetailService;
+import com.fjhx.purchase.service.quality.QualityDetailService;
+import com.fjhx.purchase.service.quality.QualityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.purchase.util.code.CodeEnum;
+import com.obs.services.internal.ServiceException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityVo;
+import com.fjhx.purchase.entity.quality.dto.QualitySelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.quality.dto.QualityDto;
+import cn.hutool.core.bean.BeanUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * <p>
+ * 质检 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@Service
+public class QualityServiceImpl extends ServiceImpl<QualityMapper, Quality> implements QualityService {
+
+    @Autowired
+    private QualityDetailService qualityDetailService;
+
+    @Autowired
+    private ArrivalDetailService arrivalDetailService;
+
+    @Override
+    public Page<QualityVo> getPage(QualitySelectDto dto) {
+        IWrapper<Quality> wrapper = getWrapper();
+        wrapper.orderByDesc("q", Quality::getId);
+        Page<QualityVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public QualityVo detail(Long id) {
+        Quality Quality = this.getById(id);
+        QualityVo result = BeanUtil.toBean(Quality, QualityVo.class);
+        return result;
+    }
+
+    /**
+     * 添加
+     * @param quality
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void add(Quality quality) {
+        quality.setCode(CodeEnum.QUALITY.getCode());
+        this.save(quality);
+        List<QualityDetail> qualityDetailList = quality.getQualityDetailList();
+        if(CollectionUtils.isNotEmpty(qualityDetailList)){
+            List<ArrivalDetail> upAll = new ArrayList<>();
+            for(QualityDetail q:qualityDetailList){
+                if(q.getQualifiedCount().compareTo(BigDecimal.ZERO)==0
+                        &&q.getNoQualifiedCount().compareTo(BigDecimal.ZERO)==0){
+                    throw new ServiceException("当前质检数量不能为0");
+                }
+                q.setQualityId(quality.getId());
+                //赋值质检状态
+                BigDecimal qualityCount = qualityDetailService.getSumQualityCount(q.getArrivalDetailId());
+                //查询到货数量
+                ArrivalDetail arrivalDetail = arrivalDetailService.getById(q.getArrivalDetailId());
+                BigDecimal sum = qualityCount.add(q.getQualifiedCount().add(q.getNoQualifiedCount()));
+                ArrivalDetail up = new ArrivalDetail();
+                up.setId(q.getArrivalDetailId());
+                if(sum.compareTo(arrivalDetail.getCount())>-1){//如果质检数量大于等于到货数量
+                    up.setStatus(ArrivalDetailStatusEnum.STATUS_20.getKey());
+                }else{
+                    up.setStatus(ArrivalDetailStatusEnum.STATUS_10.getKey());
+                }
+                upAll.add(up);
+            }
+            arrivalDetailService.updateBatchById(upAll);
+            qualityDetailService.saveBatch(qualityDetailList);
+        }
+    }
+
+    @Override
+    public void edit(QualityDto qualityDto) {
+        this.updateById(qualityDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/sales/SalesReturnDetailService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.sales;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnDetailVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailSelectDto;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailDto;
+
+
+/**
+ * <p>
+ * 到货明细单 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface SalesReturnDetailService extends BaseService<SalesReturnDetail> {
+
+    /**
+     * 到货明细单分页
+     */
+    Page<SalesReturnDetailVo> getPage(SalesReturnDetailSelectDto dto);
+
+    /**
+     * 到货明细单明细
+     */
+    SalesReturnDetailVo detail(Long id);
+
+    /**
+     * 到货明细单新增
+     */
+    void add(SalesReturnDetailDto salesReturnDetailDto);
+
+    /**
+     * 到货明细单编辑
+     */
+    void edit(SalesReturnDetailDto salesReturnDetailDto);
+
+    /**
+     * 到货明细单删除
+     */
+    void delete(Long id);
+
+}

+ 46 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/sales/SalesReturnService.java

@@ -0,0 +1,46 @@
+package com.fjhx.purchase.service.sales;
+
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import com.ruoyi.common.core.service.BaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnSelectDto;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDto;
+
+
+/**
+ * <p>
+ * 退货 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface SalesReturnService extends BaseService<SalesReturn> {
+
+    /**
+     * 退货分页
+     */
+    Page<SalesReturnVo> getPage(SalesReturnSelectDto dto);
+
+    /**
+     * 退货明细
+     */
+    SalesReturnVo detail(Long id);
+
+    /**
+     * 退货新增
+     */
+    void add(SalesReturnDto salesReturnDto);
+
+    /**
+     * 退货编辑
+     */
+    void edit(SalesReturnDto salesReturnDto);
+
+    /**
+     * 退货删除
+     */
+    void delete(Long id);
+
+}

+ 112 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnDetailServiceImpl.java

@@ -0,0 +1,112 @@
+package com.fjhx.purchase.service.sales.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
+import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
+import com.fjhx.purchase.entity.sales.po.SalesReturnDetail;
+import com.fjhx.purchase.mapper.sales.SalesReturnDetailMapper;
+import com.fjhx.purchase.service.sales.SalesReturnDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.supply.entity.supplier.po.SupplierInfo;
+import com.fjhx.supply.service.supplier.SupplierInfoService;
+import com.ruoyi.common.utils.StringUtils;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnDetailVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDetailDto;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 到货明细单 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@Service
+public class SalesReturnDetailServiceImpl extends ServiceImpl<SalesReturnDetailMapper, SalesReturnDetail> implements SalesReturnDetailService {
+
+    @Autowired
+    private SupplierInfoService supplierInfoService;
+
+    @Autowired
+    private ProductInfoService productInfoService;
+
+
+    @Override
+    public Page<SalesReturnDetailVo> getPage(SalesReturnDetailSelectDto dto) {
+        IWrapper<SalesReturnDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("t1", SalesReturnDetail::getCreateTime);
+        if(StringUtils.isNotEmpty(dto.getStatus())){
+            wrapper.eq("t1",SalesReturnDetail::getStatus,dto.getStatus());
+        }
+        Page<SalesReturnDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<SalesReturnDetailVo> list = page.getRecords();
+        if(CollectionUtils.isNotEmpty(list)){
+            List<Long> supplyIds = list.stream().map(SalesReturnDetailVo::getSupplyId).collect(Collectors.toList());
+            List<SupplierInfo> supplierInfoList = supplierInfoService.list(Wrappers.<SupplierInfo>query().lambda().in(SupplierInfo::getId,supplyIds));
+            Map<Long,List<SupplierInfo>> supplyMap = supplierInfoList.stream().distinct().collect(Collectors.groupingBy(SupplierInfo::getId));
+            if(MapUtils.isNotEmpty(supplyMap)){
+                for(SalesReturnDetailVo p:list){
+                    List<SupplierInfo> supplys = supplyMap.getOrDefault(p.getSupplyId(),null);
+                    p.setSupplyName(supplys==null?null:supplys.get(0).getName());
+                }
+            }
+            //查询产品
+            List<Long> productIds = list.stream().map(SalesReturnDetailVo::getBussinessId).collect(Collectors.toList());
+            List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
+            Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
+            if(MapUtils.isNotEmpty(productMap)) {
+                for(SalesReturnDetailVo s:list){
+                    ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
+                    s.setProductCategory(p.getClassifyName());
+                    s.setProductCode(p.getCode());
+                    s.setProductUnit(p.getUnit());
+                    s.setProductType(p.getType());
+                    s.setProductName(p.getName());
+                    s.setProductSpec(p.getSpec());
+                }
+            }
+        }
+        return page;
+    }
+
+    @Override
+    public SalesReturnDetailVo detail(Long id) {
+        SalesReturnDetail SalesReturnDetail = this.getById(id);
+        SalesReturnDetailVo result = BeanUtil.toBean(SalesReturnDetail, SalesReturnDetailVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SalesReturnDetailDto salesReturnDetailDto) {
+        this.save(salesReturnDetailDto);
+    }
+
+    @Override
+    public void edit(SalesReturnDetailDto salesReturnDetailDto) {
+        this.updateById(salesReturnDetailDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 60 - 0
hx-purchase/src/main/java/com/fjhx/purchase/service/sales/impl/SalesReturnServiceImpl.java

@@ -0,0 +1,60 @@
+package com.fjhx.purchase.service.sales.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.purchase.entity.sales.po.SalesReturn;
+import com.fjhx.purchase.mapper.sales.SalesReturnMapper;
+import com.fjhx.purchase.service.sales.SalesReturnService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.sales.vo.SalesReturnVo;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnSelectDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.fjhx.purchase.entity.sales.dto.SalesReturnDto;
+import cn.hutool.core.bean.BeanUtil;
+
+
+/**
+ * <p>
+ * 退货 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@DS(SourceConstant.PURCHASE)
+@Service
+public class SalesReturnServiceImpl extends ServiceImpl<SalesReturnMapper, SalesReturn> implements SalesReturnService {
+
+    @Override
+    public Page<SalesReturnVo> getPage(SalesReturnSelectDto dto) {
+        IWrapper<SalesReturn> wrapper = getWrapper();
+        wrapper.orderByDesc("sr", SalesReturn::getId);
+        Page<SalesReturnVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public SalesReturnVo detail(Long id) {
+        SalesReturn SalesReturn = this.getById(id);
+        SalesReturnVo result = BeanUtil.toBean(SalesReturn, SalesReturnVo.class);
+        return result;
+    }
+
+    @Override
+    public void add(SalesReturnDto salesReturnDto) {
+        this.save(salesReturnDto);
+    }
+
+    @Override
+    public void edit(SalesReturnDto salesReturnDto) {
+        this.updateById(salesReturnDto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 6 - 0
hx-purchase/src/main/java/com/fjhx/purchase/util/code/CodeEnum.java

@@ -8,8 +8,10 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.purchase.entity.arrival.po.Arrival;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.quality.po.Quality;
 import com.fjhx.purchase.service.arrival.ArrivalService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
+import com.fjhx.purchase.service.quality.QualityService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.obs.services.internal.ServiceException;
 import lombok.Getter;
@@ -26,6 +28,10 @@ public enum CodeEnum {
     PURCHASE("PO", "yyMM-", "code", 3, PurchaseService.class),
     //到货
     ARRIVAL("PA", "yyMM-", "code", 3, ArrivalService.class),
+    //质检
+    QUALITY("ZJ", "yyMM-", "code", 3, QualityService.class),
+    //退货
+    SALES_RETURN("ZJ", "yyMM-", "code", 3, QualityService.class),
     ;
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {

+ 4 - 1
hx-purchase/src/main/resources/mapper/arrival/ArrivalDetailMapper.xml

@@ -5,10 +5,13 @@
         SELECT
             t1.*,
             t2.`code`,
-            t2.supply_id
+            t2.supply_id,
+            IFNULL( SUM( t3.qualified_count ), 0 ) AS qualifiedCount,
+            IFNULL( SUM( t3.no_qualified_count ), 0 ) AS noQualifiedCount
         FROM
             arrival_detail t1
         LEFT JOIN arrival t2 ON t1.arrival_id = t2.id
+        LEFT JOIN quality_detail t3 ON t1.id = t3.arrival_detail_id
             ${ew.customSqlSegment}
     </select>
 

+ 31 - 0
hx-purchase/src/main/resources/mapper/quality/QualityDetailMapper.xml

@@ -0,0 +1,31 @@
+<?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="com.fjhx.purchase.mapper.quality.QualityDetailMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.quality.vo.QualityDetailVo">
+        select
+            qd.id,
+            qd.bussiness_id,
+            qd.purchase_detail_id,
+            qd.arrival_id,
+            qd.count,
+            qd.status,
+            qd.qualified_count,
+            qd.no_qualified_count,
+            qd.remark,
+            qd.create_user,
+            qd.create_time,
+            qd.update_user,
+            qd.update_time
+        from quality_detail qd
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getSumQualityCount" resultType="java.math.BigDecimal">
+        SELECT
+            IFNULL(SUM(qualified_count+no_qualified_count),0) AS sumQualityCount
+        FROM
+            quality_detail
+        WHERE
+            arrival_detail_id = #{arrivalDetailId}
+    </select>
+</mapper>

+ 19 - 0
hx-purchase/src/main/resources/mapper/quality/QualityMapper.xml

@@ -0,0 +1,19 @@
+<?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="com.fjhx.purchase.mapper.quality.QualityMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.quality.vo.QualityVo">
+        select
+            q.id,
+            q.code,
+            q.supply_id,
+            q.arrival_id,
+            q.status,
+            q.create_user,
+            q.create_time,
+            q.update_user,
+            q.update_time
+        from quality q
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 15 - 0
hx-purchase/src/main/resources/mapper/sales/SalesReturnDetailMapper.xml

@@ -0,0 +1,15 @@
+<?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="com.fjhx.purchase.mapper.sales.SalesReturnDetailMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.sales.vo.SalesReturnDetailVo">
+        SELECT
+            t1.*,
+            t2.`code`,
+            t2.supply_id
+        FROM
+            sales_return_detail t1
+        LEFT JOIN sales_return t2 ON t1.sales_return_id = t2.id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 18 - 0
hx-purchase/src/main/resources/mapper/sales/SalesReturnMapper.xml

@@ -0,0 +1,18 @@
+<?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="com.fjhx.purchase.mapper.sales.SalesReturnMapper">
+    <select id="getPage" resultType="com.fjhx.purchase.entity.sales.vo.SalesReturnVo">
+        select
+            sr.id,
+            sr.code,
+            sr.supply_id,
+            sr.status,
+            sr.create_user,
+            sr.create_time,
+            sr.update_user,
+            sr.update_time
+        from sales_return sr
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 5 - 1
hx-wms/src/main/java/com/fjhx/wms/entity/warehouse/po/Warehouse.java

@@ -2,7 +2,6 @@ package com.fjhx.wms.entity.warehouse.po;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
-import java.util.Date;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -34,4 +33,9 @@ public class Warehouse extends BasePo {
      */
     private String remark;
 
+    /**
+     * 仓管员id
+     */
+    private Long keeperId;
+
 }

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/warehouse/vo/WarehouseVo.java

@@ -14,4 +14,9 @@ import lombok.Setter;
 @Setter
 public class WarehouseVo extends Warehouse {
 
+    /**
+     * 仓管员名称
+     */
+    private String keeperName;
+
 }

+ 9 - 0
hx-wms/src/main/java/com/fjhx/wms/service/warehouse/impl/WarehouseServiceImpl.java

@@ -4,6 +4,7 @@ import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import com.fjhx.wms.mapper.warehouse.WarehouseMapper;
 import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.wms.entity.warehouse.vo.WarehouseVo;
@@ -12,6 +13,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.wms.entity.warehouse.dto.WarehouseDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import java.util.Arrays;
+import java.util.Map;
+
 
 /**
  * <p>
@@ -30,6 +34,8 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse
         wrapper.orderByDesc("w", Warehouse::getId);
         wrapper.like("w",Warehouse::getName,dto.getKeyword());
         Page<WarehouseVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        //赋值仓管员名称
+        UserUtil.assignmentNickName(page.getRecords(),Warehouse::getKeeperId,WarehouseVo::setKeeperName);
         return page;
     }
 
@@ -37,6 +43,9 @@ public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse
     public WarehouseVo detail(Long id) {
         Warehouse Warehouse = this.getById(id);
         WarehouseVo result = BeanUtil.toBean(Warehouse, WarehouseVo.class);
+        //赋值仓管员名称
+        Map<Long, String> nickNameMapByIds = UserUtil.getNickNameMapByIds(Arrays.asList(result.getKeeperId()));
+        result.setKeeperName(nickNameMapByIds.get(result.getKeeperId()));
         return result;
     }
 

+ 1 - 0
hx-wms/src/main/resources/mapper/warehouse/WarehouseMapper.xml

@@ -7,6 +7,7 @@
             w.name,
             w.type,
             w.remark,
+            w.keeper_id,
             w.create_user,
             w.create_time,
             w.update_user,