瀏覽代碼

Merge remote-tracking branch 'origin/master'

24282 1 年之前
父節點
當前提交
bd19866ff4

+ 34 - 0
sd-business/src/main/java/com/sd/business/controller/bom/BomSpecController.java

@@ -4,14 +4,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.sd.business.entity.bom.dto.BomSpecDto;
 import com.sd.business.entity.bom.dto.BomSpecSelectDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardSortDto;
+import com.sd.business.entity.bom.vo.BomSpecBoardSelectVo;
 import com.sd.business.entity.bom.vo.BomSpecVo;
 import com.sd.business.service.bom.BomSpecService;
 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;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -68,4 +74,32 @@ public class BomSpecController {
         bomSpecService.delete(dto.getId());
     }
 
+    /**
+     * 修改配货看板
+     * @param dto
+     */
+    @PostMapping("/editBoard")
+    public void editBoard(@RequestBody BomSpecUpdateBoardDto dto) {
+        bomSpecService.editBoard(dto);
+    }
+
+    /**
+     * 获取配货看板
+     * @param
+     */
+    @PostMapping("/getBoard")
+    public List<BomSpecBoardSelectVo> getBoard() {
+        return bomSpecService.getBoardList();
+    }
+
+
+    /**
+     * 修改配货看板排序
+     * @param dto
+     */
+    @PostMapping("/editBoardSort")
+    public void editBoardSort(@Validated @RequestBody BomSpecUpdateBoardSortDto dto) {
+        bomSpecService.editBoardSort(dto);
+    }
+
 }

+ 20 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecUpdateBoardDto.java

@@ -0,0 +1,20 @@
+package com.sd.business.entity.bom.dto;
+
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * bom规格更新配货看板入参实体
+ */
+@Getter
+@Setter
+public class BomSpecUpdateBoardDto {
+
+    /**
+     * bom规格id列表
+     */
+    List<Long> bomSpecIdList;
+}

+ 28 - 0
sd-business/src/main/java/com/sd/business/entity/bom/dto/BomSpecUpdateBoardSortDto.java

@@ -0,0 +1,28 @@
+package com.sd.business.entity.bom.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * bom规格更新配货看板排序入参实体
+ */
+@Getter
+@Setter
+public class BomSpecUpdateBoardSortDto {
+
+    /**
+     * bom规格id
+     */
+    @NotNull(message = "bom规格id不能为空")
+    private Long id;
+
+    /**
+     * 当前排序
+     */
+    @NotNull(message = "当前排序不能为空")
+    private Integer currentSort;
+}

+ 10 - 0
sd-business/src/main/java/com/sd/business/entity/bom/po/BomSpec.java

@@ -86,6 +86,16 @@ public class BomSpec extends BasePo {
     private BigDecimal netWeight;
 
     /**
+     * 是否显示看板 0否 1是
+     */
+    private Integer isShowBoard;
+
+    /**
+     * 看板排序
+     */
+    private Integer sort;
+
+    /**
      * 原系统id
      */
     private String oldId;

+ 22 - 0
sd-business/src/main/java/com/sd/business/entity/bom/vo/BomSpecBoardSelectVo.java

@@ -0,0 +1,22 @@
+package com.sd.business.entity.bom.vo;
+
+import com.sd.business.entity.bom.po.BomSpec;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * bom规格 配货看板查询返回值实体
+ * @author
+ * @since 2023-09-13
+ */
+@Getter
+@Setter
+public class BomSpecBoardSelectVo extends BomSpec {
+
+    /**
+     * 库存数量
+     */
+    private BigDecimal inventoryQuantity;
+}

+ 22 - 0
sd-business/src/main/java/com/sd/business/service/bom/BomSpecService.java

@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.service.BaseService;
 import com.sd.business.entity.bom.dto.BomSpecDto;
 import com.sd.business.entity.bom.dto.BomSpecSelectDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardSortDto;
 import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.bom.vo.BomSpecBoardSelectVo;
 import com.sd.business.entity.bom.vo.BomSpecVo;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -43,4 +48,21 @@ public interface BomSpecService extends BaseService<BomSpec> {
      */
     void delete(Long id);
 
+    /**
+     * 修改配货看板
+     * @param dto
+     */
+    void editBoard(BomSpecUpdateBoardDto dto);
+
+    /**
+     * 获取配货看板
+     * @return
+     */
+    List<BomSpecBoardSelectVo> getBoardList();
+
+    /**
+     * 修改配货看板排序
+     * @param dto
+     */
+    void editBoardSort(BomSpecUpdateBoardSortDto dto);
 }

+ 58 - 0
sd-business/src/main/java/com/sd/business/service/bom/impl/BomSpecServiceImpl.java

@@ -1,17 +1,31 @@
 package com.sd.business.service.bom.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+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.constant.StatusConstant;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.sd.business.entity.bom.dto.BomSpecDto;
 import com.sd.business.entity.bom.dto.BomSpecSelectDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardDto;
+import com.sd.business.entity.bom.dto.BomSpecUpdateBoardSortDto;
 import com.sd.business.entity.bom.po.BomSpec;
+import com.sd.business.entity.bom.vo.BomSpecBoardSelectVo;
 import com.sd.business.entity.bom.vo.BomSpecVo;
+import com.sd.business.entity.inventory.po.Inventory;
 import com.sd.business.mapper.bom.BomSpecMapper;
 import com.sd.business.service.bom.BomSpecService;
+import com.sd.business.service.inventory.InventoryService;
+import com.sd.framework.util.StreamUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 
 /**
  * <p>
@@ -23,6 +37,8 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> implements BomSpecService {
+    @Autowired
+    private InventoryService inventoryService;
 
     @Override
     public Page<BomSpecVo> getPage(BomSpecSelectDto dto) {
@@ -56,4 +72,46 @@ public class BomSpecServiceImpl extends ServiceImpl<BomSpecMapper, BomSpec> impl
         this.removeById(id);
     }
 
+    @Override
+    public void editBoard(BomSpecUpdateBoardDto dto) {
+        List<Long> bomSpecIdList = dto.getBomSpecIdList();
+        this.update(q -> q.set(BomSpec::getIsShowBoard, StatusConstant.NO).set(BomSpec::getSort, null).eq(BomSpec::getIsShowBoard, StatusConstant.YES));
+        if (ObjectUtil.isNotEmpty(bomSpecIdList)) {
+            for (int i = 0; i < bomSpecIdList.size(); i++) {
+                Long bomSpecId = bomSpecIdList.get(i);
+                int sort = i;
+                this.update(q -> q.set(BomSpec::getIsShowBoard, StatusConstant.YES)
+                        .set(BomSpec::getSort, sort).eq(BomSpec::getId, bomSpecId));
+            }
+        }
+    }
+
+    @Override
+    public List<BomSpecBoardSelectVo> getBoardList() {
+        List<BomSpec> list = this.list(q -> q.eq(BomSpec::getIsShowBoard, StatusConstant.YES).orderByAsc(BomSpec::getSort));
+        List<BomSpecBoardSelectVo> boardSelectList = BeanUtil.copyToList(list, BomSpecBoardSelectVo.class);
+        List<BomSpecBoardSelectVo> collect = boardSelectList.stream().peek(item -> {
+            List<Inventory> inventoryList = inventoryService.list(q -> q.eq(Inventory::getBomSpecId, item.getId()));
+            BigDecimal inventoryQuantity = ObjectUtil.isEmpty(inventoryList) ? BigDecimal.ZERO : StreamUtil.bigDecimalAdd(inventoryList, Inventory::getQuantity);
+            item.setInventoryQuantity(inventoryQuantity);
+        }).collect(Collectors.toList());
+        return collect;
+    }
+
+    @Override
+    public void editBoardSort(BomSpecUpdateBoardSortDto dto) {
+        BomSpec bomSpec = this.getById(dto.getId());
+        if (bomSpec != null && !Objects.equals(dto.getCurrentSort(), bomSpec.getSort())) {
+            Integer oldSort = bomSpec.getSort();
+            Integer currentSort = dto.getCurrentSort();
+            // 如果当前排序大于原排序,当前排序到原排序之间 -1
+            if (oldSort < currentSort) {
+                this.update(q -> q.setSql("sort = sort - 1").le(BomSpec::getSort, currentSort).gt(BomSpec::getSort, oldSort));
+            } else {
+                this.update(q -> q.setSql("sort = sort + 1").lt(BomSpec::getSort, oldSort).ge(BomSpec::getSort, currentSort));
+            }
+            // 更新当前bom排序
+            this.update(q -> q.set(BomSpec::getSort, currentSort).eq(BomSpec::getId, bomSpec.getId()));
+        }
+    }
 }

+ 3 - 2
sd-business/src/main/java/com/sd/business/service/purchase/impl/PurchaseBomServiceImpl.java

@@ -27,6 +27,7 @@ import com.sd.business.service.inventory.InventoryService;
 import com.sd.business.service.order.OrderService;
 import com.sd.business.service.purchase.PurchaseBomService;
 import com.sd.framework.util.Assert;
+import com.sd.framework.util.StreamUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -155,10 +156,10 @@ public class PurchaseBomServiceImpl extends ServiceImpl<PurchaseBomMapper, Purch
         for (BomSpecVo record : records) {
             PurchaseBomBoardVo purchaseBomBoard = new PurchaseBomBoardVo();
             Long bomSpecId = record.getId();
-            Inventory inventory = inventoryService.getOne(q -> q.eq(Inventory::getBomSpecId, bomSpecId));
+            List<Inventory> inventoryList = inventoryService.list(q -> q.eq(Inventory::getBomSpecId, bomSpecId));
 
             // 当前库存数
-            BigDecimal inventoryQuantity = ObjectUtil.isEmpty(inventory) ? new BigDecimal("0") : inventory.getQuantity();
+            BigDecimal inventoryQuantity = ObjectUtil.isEmpty(inventoryList) ? BigDecimal.ZERO : StreamUtil.bigDecimalAdd(inventoryList, Inventory::getQuantity);
             // 近7天消耗量
             BigDecimal quantitySevenDays = orderService.getOrderBomSpecOutStorageQuantity(record.getId(), 7);
             // 近30天消耗量