Browse Source

订单同步表

24282 1 year ago
parent
commit
e72eeae63d
27 changed files with 1052 additions and 0 deletions
  1. 71 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedController.java
  2. 71 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedOrderController.java
  3. 20 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedOrderDetailController.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedDto.java
  5. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDetailDto.java
  6. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDetailSelectDto.java
  7. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDto.java
  8. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderSelectDto.java
  9. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedSelectDto.java
  10. 38 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinished.java
  11. 58 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedOrder.java
  12. 63 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedOrderDetail.java
  13. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedOrderDetailVo.java
  14. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedOrderVo.java
  15. 17 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedVo.java
  16. 16 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedMapper.java
  17. 16 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedOrderDetailMapper.java
  18. 16 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedOrderMapper.java
  19. 28 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedOrderDetailService.java
  20. 63 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedOrderService.java
  21. 65 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedService.java
  22. 58 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderDetailServiceImpl.java
  23. 107 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderServiceImpl.java
  24. 194 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedServiceImpl.java
  25. 5 0
      sd-business/src/main/resources/mapper/inventory/InventoryFinishedMapper.xml
  26. 5 0
      sd-business/src/main/resources/mapper/inventory/InventoryFinishedOrderDetailMapper.xml
  27. 5 0
      sd-business/src/main/resources/mapper/inventory/InventoryFinishedOrderMapper.xml

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
+import com.sd.business.service.inventory.InventoryFinishedService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 成品仓库 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/inventoryFinished")
+public class InventoryFinishedController {
+
+    @Autowired
+    private InventoryFinishedService inventoryFinishedService;
+
+    /**
+     * 成品仓库分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryFinishedVo> page(@RequestBody InventoryFinishedSelectDto dto) {
+        return inventoryFinishedService.getPage(dto);
+    }
+
+    /**
+     * 成品仓库明细
+     */
+    @PostMapping("/detail")
+    public InventoryFinishedVo detail(@RequestBody BaseSelectDto dto) {
+        return inventoryFinishedService.detail(dto.getId());
+    }
+
+    /**
+     * 成品仓库新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody InventoryFinishedDto dto) {
+        inventoryFinishedService.add(dto);
+    }
+
+    /**
+     * 成品仓库编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody InventoryFinishedDto dto) {
+        inventoryFinishedService.edit(dto);
+    }
+
+    /**
+     * 成品仓库删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        inventoryFinishedService.delete(dto.getId());
+    }
+
+}

+ 71 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedOrderController.java

@@ -0,0 +1,71 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderSelectDto;
+import com.sd.business.entity.inventory.vo.InventoryFinishedOrderVo;
+import com.sd.business.service.inventory.InventoryFinishedOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 成品仓库订单 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/inventoryFinishedOrder")
+public class InventoryFinishedOrderController {
+
+    @Autowired
+    private InventoryFinishedOrderService inventoryFinishedOrderService;
+
+    /**
+     * 成品仓库订单分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryFinishedOrderVo> page(@RequestBody InventoryFinishedOrderSelectDto dto) {
+        return inventoryFinishedOrderService.getPage(dto);
+    }
+
+    /**
+     * 成品仓库订单明细
+     */
+    @PostMapping("/detail")
+    public InventoryFinishedOrderVo detail(@RequestBody BaseSelectDto dto) {
+        return inventoryFinishedOrderService.detail(dto.getId());
+    }
+
+    /**
+     * 成品仓库订单新增
+     */
+    @PostMapping("/add")
+    public void add(@RequestBody InventoryFinishedOrderDto dto) {
+        inventoryFinishedOrderService.add(dto);
+    }
+
+    /**
+     * 成品仓库订单编辑
+     */
+    @PostMapping("/edit")
+    public void edit(@RequestBody InventoryFinishedOrderDto dto) {
+        inventoryFinishedOrderService.edit(dto);
+    }
+
+    /**
+     * 成品仓库订单删除
+     */
+    @PostMapping("/delete")
+    public void delete(@RequestBody BaseSelectDto dto) {
+        inventoryFinishedOrderService.delete(dto.getId());
+    }
+
+}

+ 20 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedOrderDetailController.java

@@ -0,0 +1,20 @@
+package com.sd.business.controller.inventory;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 成品仓库订单操作记录id 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@RestController
+@RequestMapping("/inventoryFinishedOrderDetail")
+public class InventoryFinishedOrderDetailController {
+
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinished;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedDto extends InventoryFinished {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDetailDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单操作记录id新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderDetailDto extends InventoryFinishedOrderDetail {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单操作记录id列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderDetailSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单新增编辑入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderDto extends InventoryFinishedOrder {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedOrderSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderSelectDto extends BaseSelectDto {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库列表查询入参实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedSelectDto extends BaseSelectDto {
+
+}

+ 38 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinished.java

@@ -0,0 +1,38 @@
+package com.sd.business.entity.inventory.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 成品仓库
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("inventory_finished")
+public class InventoryFinished extends BasePo {
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 锁定数量
+     */
+    private BigDecimal lockQuantity;
+
+}

+ 58 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedOrder.java

@@ -0,0 +1,58 @@
+package com.sd.business.entity.inventory.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 成品仓库订单
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("inventory_finished_order")
+public class InventoryFinishedOrder extends BasePo {
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 订单id
+     */
+    private Long orderInfoId;
+
+    /**
+     * 订单sku id
+     */
+    private Long orderSkuId;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 状态 1在库 0不在库
+     */
+    private Integer status;
+
+    /**
+     * 现存数量
+     */
+    private BigDecimal existingQuantity;
+
+}

+ 63 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedOrderDetail.java

@@ -0,0 +1,63 @@
+package com.sd.business.entity.inventory.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 成品仓库订单操作记录id
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+@TableName("inventory_finished_order_detail")
+public class InventoryFinishedOrderDetail extends BasePo {
+
+    /**
+     * 编号
+     */
+    private String code;
+
+    /**
+     * 成品仓库订单id
+     */
+    private Long inventoryFinishedOrderId;
+
+    /**
+     * 事业部id
+     */
+    private Long departmentId;
+
+    /**
+     * 订单id
+     */
+    private Long orderInfoId;
+
+    /**
+     * 订单sku id
+     */
+    private Long orderSkuId;
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+
+    /**
+     * 操作类型 1生产完成入库 2销售出库
+     */
+    private Integer operationType;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedOrderDetailVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单操作记录id列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderDetailVo extends InventoryFinishedOrderDetail {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedOrderVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库订单列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedOrderVo extends InventoryFinishedOrder {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedVo.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.sd.business.entity.inventory.po.InventoryFinished;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品仓库列表查询返回值实体
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Getter
+@Setter
+public class InventoryFinishedVo extends InventoryFinished {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.inventory.po.InventoryFinished;
+
+/**
+ * <p>
+ * 成品仓库 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedMapper extends BaseMapper<InventoryFinished> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedOrderDetailMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+
+/**
+ * <p>
+ * 成品仓库订单操作记录id Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedOrderDetailMapper extends BaseMapper<InventoryFinishedOrderDetail> {
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedOrderMapper.java

@@ -0,0 +1,16 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+
+/**
+ * <p>
+ * 成品仓库订单 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedOrderMapper extends BaseMapper<InventoryFinishedOrder> {
+
+}

+ 28 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedOrderDetailService.java

@@ -0,0 +1,28 @@
+package com.sd.business.service.inventory;
+
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.enums.FinishedOperationTypeEnum;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 成品仓库订单操作记录id 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedOrderDetailService extends BaseService<InventoryFinishedOrderDetail> {
+
+    /**
+     * 添加生产入库流水记录
+     *
+     * @param list 成品仓库订单信息
+     */
+    void add(List<InventoryFinishedOrder> list, FinishedOperationTypeEnum finishedOperationTypeEnum);
+
+}

+ 63 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedOrderService.java

@@ -0,0 +1,63 @@
+package com.sd.business.service.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import com.sd.business.entity.inventory.vo.InventoryFinishedOrderVo;
+import com.sd.business.entity.order.po.OrderSku;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 成品仓库订单 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedOrderService extends BaseService<InventoryFinishedOrder> {
+
+    /**
+     * 成品仓库订单分页
+     */
+    Page<InventoryFinishedOrderVo> getPage(InventoryFinishedOrderSelectDto dto);
+
+    /**
+     * 成品仓库订单明细
+     */
+    InventoryFinishedOrderVo detail(Long id);
+
+    /**
+     * 成品仓库订单新增
+     */
+    void add(InventoryFinishedOrderDto dto);
+
+    /**
+     * 成品仓库订单编辑
+     */
+    void edit(InventoryFinishedOrderDto dto);
+
+    /**
+     * 成品仓库订单删除
+     */
+    void delete(Long id);
+
+    /**
+     * 生产入库
+     *
+     * @param orderSkuList 订单明细列表
+     */
+    void productionWarehousing(List<OrderSku> orderSkuList);
+
+    /**
+     * 根据订单id删除记录
+     *
+     * @param orderId 订单id
+     */
+    void removeByOrderId(Long orderId);
+
+}

+ 65 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedService.java

@@ -0,0 +1,65 @@
+package com.sd.business.service.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.inventory.dto.InventoryFinishedDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinished;
+import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
+
+import java.util.List;
+
+
+/**
+ * <p>
+ * 成品仓库 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+public interface InventoryFinishedService extends BaseService<InventoryFinished> {
+
+    /**
+     * 成品仓库分页
+     */
+    Page<InventoryFinishedVo> getPage(InventoryFinishedSelectDto dto);
+
+    /**
+     * 成品仓库明细
+     */
+    InventoryFinishedVo detail(Long id);
+
+    /**
+     * 成品仓库新增
+     */
+    void add(InventoryFinishedDto dto);
+
+    /**
+     * 成品仓库编辑
+     */
+    void edit(InventoryFinishedDto dto);
+
+    /**
+     * 成品仓库删除
+     */
+    void delete(Long id);
+
+    /**
+     * 生产入库
+     */
+    void productionWarehousing(List<Long> orderIdList);
+
+    /**
+     * 成品仓sku规格出入库
+     */
+    void inOut(List<InventoryFinished> list, boolean isIn);
+
+    /**
+     * 删除订单回滚库存
+     *
+     * @param orderId 订单id
+     */
+    void removeOrder(Long orderId);
+
+}

+ 58 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderDetailServiceImpl.java

@@ -0,0 +1,58 @@
+package com.sd.business.service.inventory.impl;
+
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.inventory.enums.FinishedOperationTypeEnum;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+import com.sd.business.mapper.inventory.InventoryFinishedOrderDetailMapper;
+import com.sd.business.service.inventory.InventoryFinishedOrderDetailService;
+import com.sd.business.util.CodeEnum;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 成品仓库订单操作记录id 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class InventoryFinishedOrderDetailServiceImpl extends ServiceImpl<InventoryFinishedOrderDetailMapper, InventoryFinishedOrderDetail> implements InventoryFinishedOrderDetailService {
+
+    @Override
+    public void add(List<InventoryFinishedOrder> list, FinishedOperationTypeEnum typeEnum) {
+
+        String code = typeEnum.equals(FinishedOperationTypeEnum.PRODUCTION_WAREHOUSING) ?
+                CodeEnum.FINISHED_IN.getCode() : CodeEnum.FINISHED_OUT.getCode();
+
+        String prefix = code.substring(0, code.length() - 6);
+        Map<String, Integer> numMap = new HashMap<>(1);
+        numMap.put("num", Convert.toInt(code.replace(prefix, "")));
+
+        List<InventoryFinishedOrderDetail> inventoryFinishedOrderDetailList = list.stream().map(item -> {
+            InventoryFinishedOrderDetail inventoryFinishedOrderDetail = new InventoryFinishedOrderDetail();
+            inventoryFinishedOrderDetail.setCode(prefix + numMap.get("num"));
+            inventoryFinishedOrderDetail.setInventoryFinishedOrderId(item.getId());
+            inventoryFinishedOrderDetail.setDepartmentId(item.getDepartmentId());
+            inventoryFinishedOrderDetail.setOrderInfoId(item.getOrderInfoId());
+            inventoryFinishedOrderDetail.setOrderSkuId(item.getOrderSkuId());
+            inventoryFinishedOrderDetail.setSkuSpecId(item.getSkuSpecId());
+            inventoryFinishedOrderDetail.setQuantity(item.getQuantity());
+            inventoryFinishedOrderDetail.setOperationType(typeEnum.getType());
+
+            numMap.put("num", numMap.get("num") + 1);
+            return inventoryFinishedOrderDetail;
+        }).collect(Collectors.toList());
+        saveBatch(inventoryFinishedOrderDetailList);
+
+    }
+
+}

+ 107 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedOrderServiceImpl.java

@@ -0,0 +1,107 @@
+package com.sd.business.service.inventory.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.StatusConstant;
+import com.sd.business.entity.department.constant.DepartmentConstant;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedOrderSelectDto;
+import com.sd.business.entity.inventory.enums.FinishedOperationTypeEnum;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrderDetail;
+import com.sd.business.entity.inventory.vo.InventoryFinishedOrderVo;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.mapper.inventory.InventoryFinishedOrderMapper;
+import com.sd.business.service.inventory.InventoryFinishedOrderDetailService;
+import com.sd.business.service.inventory.InventoryFinishedOrderService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 成品仓库订单 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class InventoryFinishedOrderServiceImpl extends ServiceImpl<InventoryFinishedOrderMapper, InventoryFinishedOrder> implements InventoryFinishedOrderService {
+
+    @Autowired
+    private InventoryFinishedOrderDetailService inventoryFinishedOrderDetailService;
+
+    @Override
+    public Page<InventoryFinishedOrderVo> getPage(InventoryFinishedOrderSelectDto dto) {
+
+        Page<InventoryFinishedOrderVo> page = Sql.create(InventoryFinishedOrderVo.class)
+                .selectAll(InventoryFinishedOrder.class)
+                .from(InventoryFinishedOrder.class)
+                .orderByDesc(InventoryFinishedOrder::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public InventoryFinishedOrderVo detail(Long id) {
+
+        InventoryFinishedOrderVo vo = Sql.create(InventoryFinishedOrderVo.class)
+                .selectAll(InventoryFinishedOrder.class)
+                .from(InventoryFinishedOrder.class)
+                .eq(InventoryFinishedOrder::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(InventoryFinishedOrderDto dto) {
+        save(dto);
+    }
+
+    @Override
+    public void edit(InventoryFinishedOrderDto dto) {
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+    @Override
+    public void productionWarehousing(List<OrderSku> orderSkuList) {
+        // 保存成品订单信息
+        List<InventoryFinishedOrder> list = orderSkuList.stream().map(item -> {
+            InventoryFinishedOrder inventoryFinishedOrder = new InventoryFinishedOrder();
+            inventoryFinishedOrder.setDepartmentId(DepartmentConstant.SD_SPORTS);
+            inventoryFinishedOrder.setOrderInfoId(item.getOrderId());
+            inventoryFinishedOrder.setOrderSkuId(item.getId());
+            inventoryFinishedOrder.setSkuSpecId(item.getSkuSpecId());
+            inventoryFinishedOrder.setQuantity(item.getQuantity());
+            inventoryFinishedOrder.setStatus(StatusConstant.YES);
+            inventoryFinishedOrder.setExistingQuantity(item.getQuantity());
+            return inventoryFinishedOrder;
+        }).collect(Collectors.toList());
+        saveBatch(list);
+
+        // 添加流水记录
+        inventoryFinishedOrderDetailService.add(list, FinishedOperationTypeEnum.PRODUCTION_WAREHOUSING);
+    }
+
+    @Override
+    public void removeByOrderId(Long orderId) {
+        remove(q -> q.eq(InventoryFinishedOrder::getOrderInfoId, orderId));
+        inventoryFinishedOrderDetailService.remove(q -> q.eq(InventoryFinishedOrderDetail::getOrderInfoId, orderId));
+    }
+
+}

+ 194 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedServiceImpl.java

@@ -0,0 +1,194 @@
+package com.sd.business.service.inventory.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.StatusConstant;
+import com.sd.business.entity.inventory.dto.InventoryFinishedDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinished;
+import com.sd.business.entity.inventory.po.InventoryFinishedOrder;
+import com.sd.business.entity.inventory.vo.InventoryFinishedVo;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.mapper.inventory.InventoryFinishedMapper;
+import com.sd.business.service.inventory.InventoryFinishedOrderService;
+import com.sd.business.service.inventory.InventoryFinishedService;
+import com.sd.business.service.order.OrderSkuService;
+import com.sd.framework.util.Assert;
+import com.sd.framework.util.sql.Sql;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 成品仓库 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-12-11
+ */
+@Service
+public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedMapper, InventoryFinished> implements InventoryFinishedService {
+
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    @Autowired
+    private InventoryFinishedOrderService inventoryFinishedOrderService;
+
+    @Override
+    public Page<InventoryFinishedVo> getPage(InventoryFinishedSelectDto dto) {
+
+        Page<InventoryFinishedVo> page = Sql.create(InventoryFinishedVo.class)
+                .selectAll(InventoryFinished.class)
+                .from(InventoryFinished.class)
+                .orderByDesc(InventoryFinished::getId)
+                .page(dto);
+
+        return page;
+    }
+
+    @Override
+    public InventoryFinishedVo detail(Long id) {
+
+        InventoryFinishedVo vo = Sql.create(InventoryFinishedVo.class)
+                .selectAll(InventoryFinished.class)
+                .from(InventoryFinished.class)
+                .eq(InventoryFinished::getId, id)
+                .one();
+
+        Assert.notNull(vo, "未知数据");
+
+        return vo;
+    }
+
+    @Override
+    public void add(InventoryFinishedDto dto) {
+        save(dto);
+    }
+
+    @Override
+    public void edit(InventoryFinishedDto dto) {
+        updateById(dto);
+    }
+
+    @Override
+    public void delete(Long id) {
+        removeById(id);
+    }
+
+    @Override
+    public void productionWarehousing(List<Long> orderIdList) {
+        if (orderIdList.isEmpty()) {
+            return;
+        }
+
+        // 查询订单sku明细
+        List<OrderSku> orderSkuList = orderSkuService.list(q -> q.in(OrderSku::getOrderId, orderIdList));
+        if (orderSkuList.isEmpty()) {
+            return;
+        }
+
+        // 添加成品仓库存
+        List<InventoryFinished> inventoryFinishedList = orderSkuList.stream().map(item -> {
+            InventoryFinished inventoryFinished = new InventoryFinished();
+            inventoryFinished.setSkuSpecId(item.getSkuSpecId());
+            inventoryFinished.setQuantity(item.getQuantity());
+            return inventoryFinished;
+        }).collect(Collectors.toList());
+        inOut(inventoryFinishedList, true);
+
+        inventoryFinishedOrderService.productionWarehousing(orderSkuList);
+    }
+
+    /**
+     * 成品仓sku规格出入库
+     */
+    @Override
+    public void inOut(List<InventoryFinished> list, boolean isIn) {
+
+        if (list.isEmpty()) {
+            return;
+        }
+
+        // 相同sku合并
+        Map<Long, InventoryFinished> map = list.stream().collect(Collectors.toMap(
+                InventoryFinished::getSkuSpecId,
+                Function.identity(),
+                (v1, v2) -> {
+                    v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                    return v1;
+                }));
+
+        synchronized (this) {
+
+            // 获取原库存数据
+            Map<Long, InventoryFinished> oldStorageMap = mapKEntity(InventoryFinished::getSkuSpecId,
+                    q -> q.in(InventoryFinished::getSkuSpecId, map.keySet()));
+
+            // 计算入库后库存数量
+            for (InventoryFinished item : map.values()) {
+                InventoryFinished inventoryFinished = oldStorageMap.get(item.getSkuSpecId());
+                if (inventoryFinished == null) {
+                    continue;
+                }
+                BigDecimal quantity;
+                if (isIn) {
+                    quantity = inventoryFinished.getQuantity().add(item.getQuantity());
+                } else {
+                    quantity = inventoryFinished.getQuantity().subtract(item.getQuantity());
+                }
+                item.setId(inventoryFinished.getId());
+                item.setQuantity(quantity);
+            }
+
+            // 更新数据库
+            saveOrUpdateBatch(map.values());
+        }
+
+    }
+
+    @Override
+    public void removeOrder(Long orderId) {
+
+        // 查询成品仓库
+        List<InventoryFinishedOrder> list = inventoryFinishedOrderService.list(q -> q
+                .eq(InventoryFinishedOrder::getOrderInfoId, orderId)
+                .eq(InventoryFinishedOrder::getStatus, StatusConstant.YES));
+
+        if (list.isEmpty()) {
+            return;
+        }
+
+        // 成品库存出库
+        outByFinishedOrder(list);
+
+        // 删除成品仓库订单以及明细
+        inventoryFinishedOrderService.removeByOrderId(orderId);
+    }
+
+    /**
+     * 成品库存出库
+     *
+     * @param list 成品仓库
+     */
+    private void outByFinishedOrder(List<InventoryFinishedOrder> list) {
+
+        List<InventoryFinished> inventoryFinishedList = list.stream().map(item -> {
+            InventoryFinished inventoryFinished = new InventoryFinished();
+            inventoryFinished.setQuantity(item.getQuantity());
+            inventoryFinished.setSkuSpecId(item.getSkuSpecId());
+            return inventoryFinished;
+        }).collect(Collectors.toList());
+
+        inOut(inventoryFinishedList, false);
+
+    }
+
+}

+ 5 - 0
sd-business/src/main/resources/mapper/inventory/InventoryFinishedMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.inventory.InventoryFinishedMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/inventory/InventoryFinishedOrderDetailMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.inventory.InventoryFinishedOrderDetailMapper">
+
+</mapper>

+ 5 - 0
sd-business/src/main/resources/mapper/inventory/InventoryFinishedOrderMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.inventory.InventoryFinishedOrderMapper">
+
+</mapper>