Parcourir la source

添加 产品拆分记录分页接口

yzc il y a 2 ans
Parent
commit
63242dc6dc

+ 58 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/stock/StockSplit.java

@@ -0,0 +1,58 @@
+package com.fjhx.entity.stock;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 产品组合记录
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-02-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class StockSplit extends BaseEntity {
+
+    /**
+     * 产品组合id
+     */
+    @NotNull(message = "组合产品id不能为空")
+    private Long productId;
+
+    /**
+     * 组合成品所在仓库id
+     */
+    @NotNull(message = "组合成品所在仓库id不能为空")
+    private Long sourceWarehouseId;
+
+    /**
+     * 拆分后放置仓库id
+     */
+    @NotNull(message = "拆分后放置仓库id不能为空")
+    private Long splitWarehouseId;
+
+    /**
+     * 拆分数量
+     */
+    @NotNull(message = "拆分数量不能为空")
+    @Min(value = 1, message = "拆分数量必须大于0")
+    private Integer splitQuantity;
+
+    /**
+     * 逻辑删除 0未删除 1已删除
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer delFlag;
+
+
+}

+ 90 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/stock/StockSplitPageVo.java

@@ -0,0 +1,90 @@
+package com.fjhx.params.stock;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+public class StockSplitPageVo {
+
+    /**
+     * 产品组合编码
+     *
+     * @table product_info
+     * @field code
+     */
+    private String productCode;
+
+    /**
+     * 产品组合名称
+     *
+     * @table product_info
+     * @field name
+     */
+    private String productName;
+
+    /**
+     * 规格
+     *
+     * @table product_info
+     * @field specs
+     */
+    private String productSpecs;
+
+    /**
+     * 单位
+     *
+     * @table product_info
+     * @field unit
+     */
+    private String productUnit;
+
+    /**
+     * 组合后放置仓库
+     *
+     * @table warehouse
+     * @field name
+     */
+    private String sourceWarehouseName;
+
+    /**
+     * 半成品所在仓库
+     *
+     * @table warehouse
+     * @field name
+     */
+    private String combinationWarehouseName;
+
+    /**
+     * 组合数量
+     *
+     * @table stock_combination
+     * @field combination_quantity
+     */
+    private BigDecimal combinationQuantity;
+
+    /**
+     * 操作人id
+     *
+     * @table stock_combination
+     * @field create_user
+     */
+    private Long createUser;
+
+    /**
+     * 操作人名称
+     */
+    private String createUserName;
+
+    /**
+     * 操作时间
+     *
+     * @table stock_combination
+     * @field create_time
+     */
+    private Date createTime;
+
+}

+ 16 - 2
hx-service/victoriatourist/src/main/java/com/fjhx/controller/stock/StockCombinationController.java

@@ -5,11 +5,14 @@ import com.fjhx.base.BaseIdEntity;
 import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.stock.StockCombination;
+import com.fjhx.entity.stock.StockSplit;
 import com.fjhx.params.stock.GetQuantityByWarehouseIdDto;
 import com.fjhx.params.stock.StockCombinationPageDto;
 import com.fjhx.params.stock.StockCombinationPageVo;
+import com.fjhx.params.stock.StockSplitPageVo;
 import com.fjhx.service.product.ProductInfoService;
 import com.fjhx.service.stock.StockCombinationService;
+import com.fjhx.service.stock.StockSplitService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -35,6 +38,8 @@ public class StockCombinationController {
 
     @Autowired
     private StockCombinationService stockCombinationService;
+    @Autowired
+    private StockSplitService stockSplitService;
 
     @Autowired
     private ProductInfoService productInfoService;
@@ -49,6 +54,15 @@ public class StockCombinationController {
     }
 
     /**
+     * 产品拆分记录分页
+     */
+    @PostMapping("/splitPage")
+    public R splitPage(@RequestBody StockCombinationPageDto dto) {
+        Page<StockSplitPageVo> result = stockSplitService.getPage(dto);
+        return R.success(result);
+    }
+
+    /**
      * 添加组合
      */
     @PostMapping("/add")
@@ -70,8 +84,8 @@ public class StockCombinationController {
      * 拆分组合
      */
     @PostMapping("/split")
-    public R split(@Validated @RequestBody StockCombination stockCombination) {
-        stockCombinationService.split(stockCombination);
+    public R split(@Validated @RequestBody StockSplit stockSplit) {
+        stockCombinationService.split(stockSplit);
         return R.success();
     }
 

+ 24 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockSplitMapper.java

@@ -0,0 +1,24 @@
+package com.fjhx.mapper.stock;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.stock.StockCombination;
+import com.fjhx.entity.stock.StockSplit;
+import com.fjhx.params.stock.StockCombinationPageVo;
+import com.fjhx.params.stock.StockSplitPageVo;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 产品拆分记录 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-02-16
+ */
+public interface StockSplitMapper extends BaseMapper<StockSplit> {
+
+    Page<StockSplitPageVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
+}

+ 22 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/stock/StockSplitMapper.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.mapper.stock.StockSplitMapper">
+
+    <select id="getPage" resultType="com.fjhx.params.stock.StockSplitPageVo">
+        select sc.split_quantity combinationQuantity,
+               sc.create_user          createUser,
+               sc.create_time          createTime,
+               pi.code                 productCode,
+               pi.name                 productName,
+               pi.specs                productSpecs,
+               pi.unit                 productUnit,
+               wo.name                 sourceWarehouseName,
+               wi.name                 combinationWarehouseName
+        from stock_split sc
+                 left join product_info pi on pi.id = sc.product_id
+                 left join warehouse wo on wo.id = sc.split_warehouse_id
+                 left join warehouse wi on wi.id = sc.source_warehouse_id
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>

+ 3 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockCombinationService.java

@@ -3,9 +3,11 @@ package com.fjhx.service.stock;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
 import com.fjhx.entity.stock.StockCombination;
+import com.fjhx.entity.stock.StockSplit;
 import com.fjhx.params.stock.GetQuantityByWarehouseIdDto;
 import com.fjhx.params.stock.StockCombinationPageDto;
 import com.fjhx.params.stock.StockCombinationPageVo;
+import com.fjhx.params.stock.StockSplitPageVo;
 import org.springblade.core.tool.api.R;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -28,7 +30,7 @@ public interface StockCombinationService extends BaseService<StockCombination> {
 
     void addBatch(List<StockCombination> stockCombinations);
 
-    void split(StockCombination stockCombination);
+    void split(StockSplit stockSplit);
 
     int getQuantityByWarehouseId(GetQuantityByWarehouseIdDto getQuantityByWarehouseIdDto);
 

+ 21 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/StockSplitService.java

@@ -0,0 +1,21 @@
+package com.fjhx.service.stock;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.stock.StockSplit;
+import com.fjhx.params.stock.StockCombinationPageDto;
+import com.fjhx.params.stock.StockSplitPageVo;
+
+/**
+ * <p>
+ * 产品拆分记录 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-02-16
+ */
+public interface StockSplitService extends BaseService<StockSplit> {
+
+    Page<StockSplitPageVo> getPage(StockCombinationPageDto dto);
+
+}

+ 18 - 7
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockCombinationServiceImpl.java

@@ -4,11 +4,14 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.BaseEntity;
 import com.fjhx.entity.product.ProductCombination;
 import com.fjhx.entity.product.ProductInfo;
 import com.fjhx.entity.stock.Stock;
 import com.fjhx.entity.stock.StockCombination;
+import com.fjhx.entity.stock.StockSplit;
 import com.fjhx.enums.stock.InTypeEnum;
 import com.fjhx.enums.stock.OutTypeEnum;
 import com.fjhx.mapper.stock.StockCombinationMapper;
@@ -16,10 +19,12 @@ import com.fjhx.params.stock.*;
 import com.fjhx.service.product.ProductCombinationService;
 import com.fjhx.service.stock.StockCombinationService;
 import com.fjhx.service.stock.StockService;
+import com.fjhx.service.stock.StockSplitService;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.UserClientUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import com.fjhx.utils.wrapperUtil.KeywordData;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -49,6 +54,9 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
     @Autowired
     private StockService stockService;
 
+    @Autowired
+    private StockSplitService stockSplitService;
+
 
     @Override
     public Page<StockCombinationPageVo> getPage(StockCombinationPageDto dto) {
@@ -109,23 +117,23 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void split(StockCombination stockCombination) {
+    public void split(StockSplit stockSplit) {
         // 查询组合包涵产品id以和所需数量
-        List<ProductCombination> productCombinationList = getCombinationListByProductId(stockCombination.getProductId());
+        List<ProductCombination> productCombinationList = getCombinationListByProductId(stockSplit.getProductId());
         List<StockChangeDetailsDto> stockChangeDetailsDtoList = new ArrayList<>();
         for(ProductCombination productCombination:productCombinationList){
             //设置包含产品id和数量(赋值变更明细)
             StockChangeDetailsDto stockChangeDetailsDto = new StockChangeDetailsDto();
             stockChangeDetailsDto.setGoodsId(productCombination.getLinkProductId());
             //计算要入库的数量 包含产品所需的数量*要拆分组合的数量
-            stockChangeDetailsDto.setChangeQuantity(productCombination.getLinkQuantity().multiply(BigDecimal.valueOf(stockCombination.getCombinationQuantity())));
+            stockChangeDetailsDto.setChangeQuantity(productCombination.getLinkQuantity().multiply(BigDecimal.valueOf(stockSplit.getSplitQuantity())));
             stockChangeDetailsDtoList.add(stockChangeDetailsDto);
         }
         //将包含产品入库
         // 赋值库存变更参数
         StockChangeDto stockChangeDto0 = new StockChangeDto();
         stockChangeDto0.setDefaultBusinessId(IdWorker.getId());
-        stockChangeDto0.setDefaultWarehouseId(stockCombination.getSourceWarehouseId());
+        stockChangeDto0.setDefaultWarehouseId(stockSplit.getSourceWarehouseId());
         stockChangeDto0.setTypeEnum(InTypeEnum.COMBINATION);
         stockChangeDto0.setChangeDetailsList(stockChangeDetailsDtoList);
         // 保存变更明细
@@ -133,16 +141,19 @@ public class StockCombinationServiceImpl extends ServiceImpl<StockCombinationMap
 
         //将产品组合出库
         StockChangeDetailsDto stockChangeDetailsDto = new StockChangeDetailsDto();
-        stockChangeDetailsDto.setGoodsId(stockCombination.getProductId());
-        stockChangeDetailsDto.setChangeQuantity(BigDecimal.valueOf(stockCombination.getCombinationQuantity()));
+        stockChangeDetailsDto.setGoodsId(stockSplit.getProductId());
+        stockChangeDetailsDto.setChangeQuantity(BigDecimal.valueOf(stockSplit.getSplitQuantity()));
         // 赋值库存变更参数
         StockChangeDto stockChangeDto = new StockChangeDto();
         stockChangeDto.setDefaultBusinessId(IdWorker.getId());
-        stockChangeDto.setDefaultWarehouseId(stockCombination.getCombinationWarehouseId());
+        stockChangeDto.setDefaultWarehouseId(stockSplit.getSourceWarehouseId());
         stockChangeDto.setTypeEnum(OutTypeEnum.COMBINATION);
         stockChangeDto.setChangeDetailsList(Collections.singletonList(stockChangeDetailsDto));
         // 保存变更明细
         stockService.changeQuantity(stockChangeDto);
+
+        //--------添加拆分记录-------------------------------------------
+        stockSplitService.save(stockSplit);
     }
 
     @Override

+ 55 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockSplitServiceImpl.java

@@ -0,0 +1,55 @@
+package com.fjhx.service.stock.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.entity.product.ProductInfo;
+import com.fjhx.entity.stock.StockCombination;
+import com.fjhx.entity.stock.StockSplit;
+import com.fjhx.mapper.stock.StockSplitMapper;
+import com.fjhx.params.stock.*;
+import com.fjhx.service.stock.StockSplitService;
+import com.fjhx.utils.UserClientUtil;
+import com.fjhx.utils.wrapperUtil.IWrapper;
+import com.fjhx.utils.wrapperUtil.KeywordData;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * <p>
+ * 产品拆分记录 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2023-02-16
+ */
+@Service
+public class StockSplitServiceImpl extends ServiceImpl<StockSplitMapper, StockSplit> implements StockSplitService {
+
+    @Override
+    public Page<StockSplitPageVo> getPage(StockCombinationPageDto dto) {
+        // 拼接查询条件
+        IWrapper<Object> wrapper = IWrapper.getWrapper(dto)
+                .keyword(
+                        new KeywordData("pi", ProductInfo::getCode),
+                        new KeywordData("pi", ProductInfo::getName)
+                )
+                .orderByDesc("sc", StockCombination::getCreateTime);
+
+        // 查询产品组合记录分页
+        Page<StockSplitPageVo> page = baseMapper.getPage(dto.getPage(), wrapper);
+
+        // 赋值创作人名称
+        List<StockSplitPageVo> records = page.getRecords();
+        if (records.size() == 0) {
+            return page;
+        }
+
+        Map<Long, String> userNameMap = UserClientUtil.getUserNameMap(records, StockSplitPageVo::getCreateUser);
+        for (StockSplitPageVo stockSplitPageVo : records) {
+            stockSplitPageVo.setCreateUserName(userNameMap.get(stockSplitPageVo.getCreateUser()));
+        }
+
+        return page;
+    }
+}