Przeglądaj źródła

新增线边仓

fgd 1 rok temu
rodzic
commit
9ec0793a63
18 zmienionych plików z 672 dodań i 0 usunięć
  1. 34 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedTemporaryController.java
  2. 45 0
      sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedTemporaryDetailController.java
  3. 50 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailAddDto.java
  4. 16 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailDto.java
  5. 33 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailSelectDto.java
  6. 16 0
      sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDto.java
  7. 32 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedTemporary.java
  8. 58 0
      sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedTemporaryDetail.java
  9. 26 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedTemporaryDetailVo.java
  10. 26 0
      sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedTemporaryVo.java
  11. 28 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedTemporaryDetailMapper.java
  12. 26 0
      sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedTemporaryMapper.java
  13. 32 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedTemporaryDetailService.java
  14. 34 0
      sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedTemporaryService.java
  15. 96 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedTemporaryDetailServiceImpl.java
  16. 83 0
      sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedTemporaryServiceImpl.java
  17. 22 0
      sd-business/src/main/resources/mapper/inventory/InventoryFinishedTemporaryDetailMapper.xml
  18. 15 0
      sd-business/src/main/resources/mapper/inventory/InventoryFinishedTemporaryMapper.xml

+ 34 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedTemporaryController.java

@@ -0,0 +1,34 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryVo;
+import com.sd.business.service.inventory.InventoryFinishedTemporaryService;
+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-11-15
+ */
+@RestController
+@RequestMapping("/inventoryFinishedTemporary")
+public class InventoryFinishedTemporaryController {
+    @Autowired
+    private InventoryFinishedTemporaryService inventoryFinishedTemporaryService;
+
+    /**
+     * 成品暂存仓库分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryFinishedTemporaryVo> page(@RequestBody InventoryFinishedSelectDto dto) {
+        return inventoryFinishedTemporaryService.getPage(dto);
+    }
+}

+ 45 - 0
sd-business/src/main/java/com/sd/business/controller/inventory/InventoryFinishedTemporaryDetailController.java

@@ -0,0 +1,45 @@
+package com.sd.business.controller.inventory;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sd.business.entity.inventory.dto.InventoryFinishedTemporaryDetailAddDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedTemporaryDetailSelectDto;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryDetailVo;
+import com.sd.business.service.inventory.InventoryFinishedTemporaryDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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-11-15
+ */
+@RestController
+@RequestMapping("/inventoryFinishedTemporaryDetail")
+public class InventoryFinishedTemporaryDetailController {
+
+    @Autowired
+    private InventoryFinishedTemporaryDetailService inventoryFinishedTemporaryDetailService;
+
+    /**
+     * 成品暂存仓库操作记录分页
+     */
+    @PostMapping("/page")
+    public Page<InventoryFinishedTemporaryDetailVo> page(@RequestBody InventoryFinishedTemporaryDetailSelectDto dto) {
+        return inventoryFinishedTemporaryDetailService.getPage(dto);
+    }
+
+    /**
+     * 成品暂存仓库操作记录新增
+     */
+    @PostMapping("/add")
+    public void add(@Validated @RequestBody InventoryFinishedTemporaryDetailAddDto addDto) {
+        inventoryFinishedTemporaryDetailService.add(addDto);
+    }
+}

+ 50 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailAddDto.java

@@ -0,0 +1,50 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 成品暂存仓库操作记录新增入参实体
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+public class InventoryFinishedTemporaryDetailAddDto {
+
+    /**
+     * 操作类型 1入库 0出库
+     */
+    @NotNull(message = "操作类型不能为空")
+    private Integer type;
+
+    /**
+     * 操作时间
+     */
+    private Date operationTime;
+
+    /**
+     * 调仓标记
+     */
+    private Long allotFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 明细
+     */
+    @Valid
+    @NotEmpty(message = "物料信息不能为空")
+    private List<InventoryFinishedTemporaryDetail> detailDtoList;
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailDto.java

@@ -0,0 +1,16 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品暂存仓库操作记录新增编辑入参实体
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+public class InventoryFinishedTemporaryDetailDto extends InventoryFinishedTemporaryDetail {
+}

+ 33 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDetailSelectDto.java

@@ -0,0 +1,33 @@
+package com.sd.business.entity.inventory.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品暂存仓库操作记录列表查询入参实体
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+public class InventoryFinishedTemporaryDetailSelectDto extends BaseSelectDto {
+
+    /**
+     * 操作类型 1入库 0出库
+     */
+    private Integer type;
+
+    /**
+     * sku规格品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格品名
+     */
+    private String skuSpecName;
+
+
+}

+ 16 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/dto/InventoryFinishedTemporaryDto.java

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

+ 32 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedTemporary.java

@@ -0,0 +1,32 @@
+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-11-15
+ */
+@Getter
+@Setter
+@TableName("inventory_finished_temporary")
+public class InventoryFinishedTemporary extends BasePo {
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    private BigDecimal quantity;
+}

+ 58 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/po/InventoryFinishedTemporaryDetail.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 javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 成品暂存仓库(线边仓)操作记录
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+@TableName("inventory_finished_temporary_detail")
+public class InventoryFinishedTemporaryDetail extends BasePo {
+
+    /**
+     * 操作类型 1入库 0出库
+     */
+    private Integer type;
+
+    /**
+     * sku规格id
+     */
+    @NotNull(message = "sku规格id不能为空")
+    private Long skuSpecId;
+
+    /**
+     * 数量
+     */
+    @NotNull(message = "数量不能为空")
+    @DecimalMin(value = "0.01", message = "数量必须大于0")
+    private BigDecimal quantity;
+
+    /**
+     * 操作时间
+     */
+    private Date operationTime;
+
+    /**
+     * 调仓标记
+     */
+    private Long allotFlag;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedTemporaryDetailVo.java

@@ -0,0 +1,26 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品暂存仓库操作记录列表查询返回值实体
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+public class InventoryFinishedTemporaryDetailVo extends InventoryFinishedTemporaryDetail {
+
+    /**
+     * sku规格品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格品名
+     */
+    private String skuSpecName;
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/entity/inventory/vo/InventoryFinishedTemporaryVo.java

@@ -0,0 +1,26 @@
+package com.sd.business.entity.inventory.vo;
+
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporary;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 成品暂存仓库列表查询返回值实体
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Getter
+@Setter
+public class InventoryFinishedTemporaryVo extends InventoryFinishedTemporary {
+
+    /**
+     * sku规格品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格品名
+     */
+    private String skuSpecName;
+}

+ 28 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedTemporaryDetailMapper.java

@@ -0,0 +1,28 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryDetailVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 成品暂存仓库操作记录 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+public interface InventoryFinishedTemporaryDetailMapper extends BaseMapper<InventoryFinishedTemporaryDetail> {
+
+    /**
+     * 分页
+     * @param page
+     * @param wrapper
+     * @return
+     */
+    Page<InventoryFinishedTemporaryDetailVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<InventoryFinishedTemporaryDetail> wrapper);
+
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/mapper/inventory/InventoryFinishedTemporaryMapper.java

@@ -0,0 +1,26 @@
+package com.sd.business.mapper.inventory;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporary;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 成品暂存仓库 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+public interface InventoryFinishedTemporaryMapper extends BaseMapper<InventoryFinishedTemporary> {
+    /**
+     * 分页
+     * @param page
+     * @param wrapper
+     * @return
+     */
+    Page<InventoryFinishedTemporaryVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<InventoryFinishedTemporary> wrapper);
+}

+ 32 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedTemporaryDetailService.java

@@ -0,0 +1,32 @@
+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.InventoryFinishedTemporaryDetailAddDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedTemporaryDetailSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryDetailVo;
+
+/**
+ * <p>
+ * 成品暂存仓库操作记录 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+public interface InventoryFinishedTemporaryDetailService extends BaseService<InventoryFinishedTemporaryDetail> {
+
+    /**
+     * 分页
+     * @param dto
+     * @return
+     */
+    Page<InventoryFinishedTemporaryDetailVo> getPage(InventoryFinishedTemporaryDetailSelectDto dto);
+
+    /**
+     * 成品暂存仓库操作记录新增
+     * @param addDto
+     */
+    void add(InventoryFinishedTemporaryDetailAddDto addDto);
+}

+ 34 - 0
sd-business/src/main/java/com/sd/business/service/inventory/InventoryFinishedTemporaryService.java

@@ -0,0 +1,34 @@
+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.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporary;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 成品暂存仓库 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+public interface InventoryFinishedTemporaryService extends BaseService<InventoryFinishedTemporary> {
+
+    /**
+     * 分页
+     * @param dto
+     * @return
+     */
+    Page<InventoryFinishedTemporaryVo> getPage(InventoryFinishedSelectDto dto);
+
+    /**
+     * 出入库新增
+     * @param list
+     * @param isIn
+     */
+    void inOut(List<InventoryFinishedTemporary> list, boolean isIn);
+}

+ 96 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedTemporaryDetailServiceImpl.java

@@ -0,0 +1,96 @@
+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.utils.wrapper.IWrapper;
+import com.sd.business.entity.in.emums.InOutTypeEnum;
+import com.sd.business.entity.inventory.dto.InventoryFinishedTemporaryDetailAddDto;
+import com.sd.business.entity.inventory.dto.InventoryFinishedTemporaryDetailSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporary;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporaryDetail;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryDetailVo;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.sku.po.SkuSpec;
+import com.sd.business.mapper.inventory.InventoryFinishedTemporaryDetailMapper;
+import com.sd.business.service.inventory.InventoryFinishedService;
+import com.sd.business.service.inventory.InventoryFinishedTemporaryDetailService;
+import com.sd.business.service.inventory.InventoryFinishedTemporaryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 成品暂存仓库操作记录 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-11-15
+ */
+@Service
+public class InventoryFinishedTemporaryDetailServiceImpl extends ServiceImpl<InventoryFinishedTemporaryDetailMapper, InventoryFinishedTemporaryDetail> implements InventoryFinishedTemporaryDetailService {
+
+    @Autowired
+    private InventoryFinishedTemporaryService inventoryFinishedTemporaryService;
+
+    @Autowired
+    private InventoryFinishedService inventoryFinishedService;
+
+    @Override
+    public Page<InventoryFinishedTemporaryDetailVo> getPage(InventoryFinishedTemporaryDetailSelectDto dto) {
+        IWrapper<InventoryFinishedTemporaryDetail> wrapper = getWrapper();
+        wrapper.orderByDesc("i", InventoryFinishedTemporaryDetail::getId);
+        wrapper.eq("i", InventoryFinishedTemporaryDetail::getType, dto.getSkuSpecCode());
+        wrapper.ge("i", InventoryFinishedTemporaryDetail::getOperationTime, dto.getBeginTime());
+        wrapper.le("i", InventoryFinishedTemporaryDetail::getOperationTime, dto.getEndTime());
+        wrapper.like("ss", SkuSpec::getCode, dto.getSkuSpecCode());
+        wrapper.like("ss", SkuSpec::getName, dto.getSkuSpecName());
+        return this.baseMapper.getPage(dto.getPage(), wrapper);
+    }
+
+    @Override
+    public void add(InventoryFinishedTemporaryDetailAddDto addDto) {
+        List<InventoryFinishedTemporaryDetail> detailDtoList = addDto.getDetailDtoList();
+
+        List<InventoryFinishedTemporary> finishedTemporaryList = detailDtoList.stream().map(item -> {
+            InventoryFinishedTemporary finishedTemporary = new InventoryFinishedTemporary();
+            finishedTemporary.setSkuSpecId(item.getSkuSpecId());
+            finishedTemporary.setQuantity(item.getQuantity());
+            return finishedTemporary;
+        }).collect(Collectors.toList());
+
+        if (Objects.equals(addDto.getType(), InOutTypeEnum.IN.getKey())) {
+            inventoryFinishedTemporaryService.inOut(finishedTemporaryList, true);
+        } else {
+            inventoryFinishedTemporaryService.inOut(finishedTemporaryList, false);
+            // 调拨出库到成品库,新增无源成品
+            List<OrderSku> orderSkuList = detailDtoList.stream()
+                    .map(item -> {
+                        OrderSku orderSku = new OrderSku();
+                        orderSku.setSkuSpecId(item.getSkuSpecId());
+                        orderSku.setQuantity(item.getQuantity());
+                        return orderSku;
+                    })
+                    .collect(Collectors.toList());
+            inventoryFinishedService.noSourceInWarehousing(orderSkuList);
+        }
+
+        // 赋值
+        if (addDto.getOperationTime() == null) {
+            addDto.setOperationTime(new Date());
+        }
+        detailDtoList.forEach(item -> {
+            item.setType(addDto.getType());
+            item.setOperationTime(addDto.getOperationTime());
+            item.setAllotFlag(addDto.getAllotFlag());
+            item.setRemark(addDto.getRemark());
+        });
+
+        // 保存成品暂存仓库操作记录
+        this.saveBatch(detailDtoList);
+    }
+}

+ 83 - 0
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedTemporaryServiceImpl.java

@@ -0,0 +1,83 @@
+package com.sd.business.service.inventory.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.inventory.dto.InventoryFinishedSelectDto;
+import com.sd.business.entity.inventory.po.InventoryFinishedTemporary;
+import com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryVo;
+import com.sd.business.entity.sku.po.SkuSpec;
+import com.sd.business.mapper.inventory.InventoryFinishedTemporaryMapper;
+import com.sd.business.service.inventory.InventoryFinishedTemporaryService;
+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-11-15
+ */
+@Service
+public class InventoryFinishedTemporaryServiceImpl extends ServiceImpl<InventoryFinishedTemporaryMapper, InventoryFinishedTemporary> implements InventoryFinishedTemporaryService {
+
+    @Override
+    public Page<InventoryFinishedTemporaryVo> getPage(InventoryFinishedSelectDto dto) {
+        IWrapper<InventoryFinishedTemporary> wrapper = getWrapper();
+        wrapper.orderByDesc("i", InventoryFinishedTemporary::getId);
+        wrapper.like("ss", SkuSpec::getCode, dto.getSkuSpecCode());
+        wrapper.like("ss", SkuSpec::getName, dto.getSkuSpecName());
+        wrapper.gt("i", InventoryFinishedTemporary::getQuantity, 0);
+        return this.baseMapper.getPage(dto.getPage(), wrapper);
+    }
+
+    @Override
+    public void inOut(List<InventoryFinishedTemporary> list, boolean isIn) {
+        if (ObjectUtil.isEmpty(list)) {
+            return;
+        }
+
+        // 相同sku合并
+        Map<Long, InventoryFinishedTemporary> map = list.stream().collect(Collectors.toMap(
+                InventoryFinishedTemporary::getSkuSpecId,
+                Function.identity(),
+                (v1, v2) -> {
+                    v1.setQuantity(v1.getQuantity().add(v2.getQuantity()));
+                    return v1;
+                }));
+
+        synchronized (this) {
+
+            // 获取原库存数据
+            Map<Long, InventoryFinishedTemporary> oldStorageMap = this.mapKEntity(InventoryFinishedTemporary::getSkuSpecId,
+                    q -> q.in(InventoryFinishedTemporary::getSkuSpecId, map.keySet()));
+
+            // 计算入库后库存数量
+            for (InventoryFinishedTemporary item : map.values()) {
+                InventoryFinishedTemporary inventoryFinishedTemporary = oldStorageMap.get(item.getSkuSpecId());
+                if (inventoryFinishedTemporary == null) {
+                    continue;
+                }
+                BigDecimal quantity;
+                if (isIn) {
+                    quantity = inventoryFinishedTemporary.getQuantity().add(item.getQuantity());
+                } else {
+                    quantity = inventoryFinishedTemporary.getQuantity().subtract(item.getQuantity());
+                }
+                item.setId(inventoryFinishedTemporary.getId());
+                item.setQuantity(quantity);
+            }
+
+            // 更新数据库
+            saveOrUpdateBatch(map.values());
+        }
+    }
+}

+ 22 - 0
sd-business/src/main/resources/mapper/inventory/InventoryFinishedTemporaryDetailMapper.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.sd.business.mapper.inventory.InventoryFinishedTemporaryDetailMapper">
+
+    <select id="getPage" resultType="com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryDetailVo">
+        select i.id,
+               i.sku_spec_id,
+               i.quantity,
+               i.operation_time,
+               i.allot_flag,
+               i.remark,
+               i.create_user,
+               i.create_time,
+               i.update_user,
+               i.update_time,
+               ss.name skuSpecName,
+               ss.code skuSpecCode
+        from inventory_finished_temporary_detail i
+                 inner join sku_spec ss on ss.id = i.sku_spec_id
+            ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 15 - 0
sd-business/src/main/resources/mapper/inventory/InventoryFinishedTemporaryMapper.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.sd.business.mapper.inventory.InventoryFinishedTemporaryMapper">
+
+    <select id="getPage" resultType="com.sd.business.entity.inventory.vo.InventoryFinishedTemporaryVo">
+        select i.id,
+               i.sku_spec_id,
+               i.quantity,
+               ss.name skuSpecName,
+               ss.code skuSpecCode
+        from inventory_finished_temporary i
+                 inner join sku_spec ss on ss.id = i.sku_spec_id
+            ${ew.customSqlSegment}
+    </select>
+</mapper>